#include<stdio.h> #include<assert.h> #include<stdlib.h> typedef int DataType; typedef struct SListNode { DataType data; struct SListNode* next; }SListNode; SListNode* BuyNode( DataType x) { SListNode* next = (SListNode*)malloc(sizeof(SListNode)); next->data = x; next->next = NULL; return next; } void PushBack(SListNode* & ppHead, DataType x) { if (ppHead == NULL) { ppHead = BuyNode(x); } else { SListNode* tail = ppHead; while (tail->next != NULL) { tail = tail->next; } tail->next = BuyNode(x); } } void PrintSNodeList(SListNode* ppHead) { while (ppHead) { printf("%d->",ppHead->data); ppHead = ppHead->next; } printf("\n"); } //删除一个无头单链表的非尾节点 void DelTail(SListNode* &ppHead, SListNode* pos) { assert(ppHead); SListNode* del = pos; SListNode* cur = del->next; SListNode* ppHeadName = ppHead; while (ppHeadName != del) { ppHeadName = ppHeadName->next; } if (ppHeadName == NULL) { return; } del->data = cur->data; del->next = cur->next; free(cur); } void Test2() { SListNode* List = NULL; PushBack(List, 1); PushBack(List, 2); PushBack(List, 3); PushBack(List, 4); PushBack(List, 5); DelTail(List, List->next->next); PrintSNodeList(List); } int main() { Test2(); system("pause"); return 0; }
C语言:【单链表】删除一个无头单链表的非尾节点
原创
©著作权归作者所有:来自51CTO博客作者韩静静的原创作品,请联系作者获取转载授权,否则将追究法律责任
![](https://ucenter.51cto.com/images/noavatar_middle.gif)
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
简单的尾插法实现单链表
尾插法建立单链表
结点 头结点 链表