Chinaunix首页 | 论坛 | 博客
  • 博客访问: 145236
  • 博文数量: 66
  • 博客积分: 1571
  • 博客等级: 上尉
  • 技术积分: 715
  • 用 户 组: 普通用户
  • 注册时间: 2011-10-24 22:55
文章分类

全部博文(66)

文章存档

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)  

}  

阅读(2082) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~