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;

    }
};
全部评论

相关推荐

12-13 14:51
已编辑
井冈山大学 算法工程师
龙虾x:算法比你强的没有你美,比你美的…..算了已经没有比你美的了
工作两年想退休了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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