链表:反转、合并

   关于链表的基础知识,请参考我的其他文档:http://blog.csdn.net/look595271601/article/details/13210725

        在实现以下操作之前,还是首先定义基本数据类型:

[cpp]  view plain copy
  1. typedef struct Node  
  2. {  
  3.     int data;  
  4.     struct LinkList * next;  
  5. }LinkNode, *LinkList;  

(1)链表的反转

基本思想:利用一个辅助指针(tmp),用于保存当前指针指向的下一个结点;然后,反转当前结点的指针指向,使其指向前一个结点;最后,利用辅助指针向后遍历。

[cpp]  view plain copy
  1. void ReverseList(LinkList &head)  
  2. {  
  3.     LinkList pre, cur, tmp;  
  4.     if(head == NULL)  
  5.          return;  
  6.     pre = head;  
  7.     cur = head->next;  
  8.     while(cur)  
  9.     {  
  10.          tmp = cur->next;  
  11.          cur->next = pre;  
  12.          pre = cur;  
  13.          cur = tmp;  
  14.     }  
  15.     head->next = NULL;  //将原头结点的指针,指向NULL,作为反转后链表的尾指针  
  16.     head = pre;   //此语句不能丢,一定要记得将头结点改变位置  
  17. }  

(2)http://blog.csdn.net/rtyytr/article/details/6776014

(3)合并两个有序链表

http://blog.csdn.net/lalor/article/details/7429989

http://blog.163.com/zhaohai_1988/blog/static/2095100852012620102858311/



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值