2012年(66)
分类: C/C++
2012-06-12 21:08:49
单链表逆置在面试中经常见到,于是自己随变写了一个与大家一起学习交流,有什么意见或建议欢迎提出,大家共同进步啊:-)
#include
#include
#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)
}