反转链表

来源:互联网 发布:python 帮助文档 编辑:程序博客网 时间:2024/06/03 23:03

题目描述:
输入一个链表,反转链表后,输出链表的所有元素。
解题思路:
初始化两个指针(变量),保存当前节点的next,然后让当前节点的next指向前一个节点;进行节点的翻转,当前节点为前一个结点,当前节点的下一个节点为当前节点,当前节点的前一个节点变为翻转后的第一个节点。

//反转链表//输入一个链表,反转链表后,输出链表的所有元素。public class Solution19 {    public class ListNode {        int val;        ListNode next = null;        ListNode(int val) {        this.val = val;        }    }    public ListNode ReverseList(ListNode head) {  //传入当前节点        if (head == null){ //head是当前节点            return null;        }        ListNode pre = null; //pre为当前节点的前一结点        ListNode next = null; //next为当前节点的下一节点        while (head != null){            next = head.next; //先用next保存head的下一个节点的信息,保证单链表不会因为失去head节点的原next节点而就此断裂            head.next = pre;  //保存完next,就可以让head从指向next变成指向pre了            //head指向pre后,就继续依次反转下一个节点            //让pre,head,next依次向后移动一个节点,继续下一次的指针反转            pre = head;            head = next;        }        //如果head为null的时候,pre就为最后一个节点了,但是链表已经反转完毕,pre就是反转后链表的第一个节点        return pre;    }}
0 0
原创粉丝点击