JZ15 反转链表

题目描述

输入一个链表,反转链表后,输出新链表的表头。

思路

反转链表不像数组,数组有索引值,但是链表只有前后连接的指针,所以比较复杂,需要对每一条指针进行修改;不能直接把指向后面的指针指向前面(这样后面的结点就都丢了),需要先把后面的节点进行保存,同时也需要将前面的指针进行保存。
设置三个指针,一个保存后面的节点,一个保存前面的节点
pre,p,post
每一次都令:
post=p->next; 保存后面的节点
p->next=pre; 令当前的指针指向前面的节点
pre=p; 依次当前节点变为前一个节点
p=post; 后一个节点变为当前节点
![图片说明](https://uploadfiles.nowcoder.com/images/20200418/690904941_1587214092558_6446EC4455C2737BBE2054E6C6AA5ADC "图片标题")

代码

class Solution {
public:
    ListNode* ReverseList(ListNode* pHead) {
        ListNode* pre=NULL;
        ListNode* p=pHead;
        ListNode* post=pHead;
        while(p!=NULL)
        {
            post=p->next;
            p->next=pre;
            pre=p;
            p=post;
        }
        return pre;

    }
};
全部评论

相关推荐

09-01 11:31
门头沟学院 Java
buul:七牛云的吧,感觉想法是好的,但是大家没那么多时间弄他这个啊。。。不知道的还以为他是顶尖大厂呢还搞比赛抢hc,只能说应试者的痛苦考察方是无法理解的,他们只会想一出是一出
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务