链表:反转、合并

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

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

typedef struct Node
{
    int data;
    struct LinkList * next;
}LinkNode, *LinkList;

(1)链表的反转

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

void ReverseList(LinkList &head)
{
    LinkList pre, cur, tmp;
    if(head == NULL)
         return;
    pre = head;
    cur = head->next;
    while(cur)
    {
         tmp = cur->next;
         cur->next = pre;
         pre = cur;
         cur = tmp;
    }
    head->next = NULL;  //将原头结点的指针,指向NULL,作为反转后链表的尾指针
    head = pre;   //此语句不能丢,一定要记得将头结点改变位置
}

(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/



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值