反转链表

来源:互联网 发布:无损cd刻录软件 编辑:程序博客网 时间:2024/06/06 19:31

题目描述
输入一个链表,反转链表后,输出链表的所有元素。

思路
用pre表示当前节点的前一节点,用next表示当前节点的后续节点。
对于任意节点,需要将指向next变成指向pre即可完成链表反转的效果。步骤如下:
1.先用next保存head的下一个节点信息,保证head指向pre之后,head->next节点仍然可以找到。
2.让head指向pre;
3.依次反转下一节点。

代码

public ListNode ReverseList(ListNode head){        ListNode pre = null;        ListNode next = null;        if(head==null)            return head;        while(head!=null){//直到链表的最后一个节点        //1.用next保存当前节点(head)的下一节点            next = head.next;            //2head->next指向pre            head.next = pre;            //3.pre和head向前移动一位,即可进行下一位反转            pre = head;            head = next;        }        return pre;    }

总结:来自剑指offer题库。