单链表逆置思路:创建一个辅助结点(preNode),遍历过程中,把当前结点的指针域设置为preNode的地址值(实现链表指向逆置的关键一步)。后移curNode和preNode。。
#include <stdio.h>
#include <stdlib.h>
#define ITEM_NUM 10
typedef struct tagNode {
int e;
struct tagNode *next;
}Node;
Node* LinkList_reverse(Node* head)
{
Node *preNode,*curNode,*nextNode;
if(head==NULL) return NULL;//空链表
if(head->next == NULL) return head;//仅一个元素
curNode = head;preNode=NULL;//初始化
while(curNode)
{
nextNode = curNode->next;//先记录下一个结点
curNode->next = preNode;//改变链表方向(逆置)
preNode = curNode;//将当前结点作为下一次循环的前一个结点
curNode = nextNode;//向后推移一个结点
}
return preNode;//当遍历完链表后curNode应该为空,此时preNode
就是逆置后链表头(head)
}
本文详细介绍了单链表逆置的算法思路,通过创建辅助节点和改变指针指向实现链表逆置,适用于链表操作的学习和实践。
3077

被折叠的 条评论
为什么被折叠?



