链表:反转链表

痞子三分冷 提交于 2020-08-19 03:27:27

题目描述
输入一个链表,反转链表后,输出新链表的表头。

考察点:如何调整指针以达到反转的效果。

思路:
初始化3个指针:
1.pre:已反转链表的最后一个节点,刚开始没有反转,所以是null。
2.cur:原始链表的第一个节点,刚开始就是head;
3.nex:原始链表的第二个节点,用来保留原始链表。刚开始是null,循环里要重新定义。 每次循环:
1.nex=cur.next;---先保留原始链表 2.cur.next=pre;---倒转指针去指向已反转链表的最后一个节点
3.pre=cur; cur=nex; 继续去操作下一个节点。
循环条件:cur !=null; 跳出循环时,pre就是反转完成的链表的首节点了,返回pre即可。

代码:

public class Solution {
    public ListNode ReverseList(ListNode head) {
        ListNode pre=null;
        ListNode cur=head;
        ListNode nex=null;
        while(cur!=null){
            nex=cur.next;
            cur.next=pre;
            pre=cur;
            cur=nex;
        }
        return pre;
    }
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!