反转链表

来源:互联网 发布:济宁网络问政平台育才 编辑:程序博客网 时间:2024/05/23 18:48

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

1
2
3
4
5
6
7
8
9
10
11
publicListNode ReverseList(ListNode head) {
    ListNode pre = null;
    ListNode next = null;
    while(head != null) {
        next = head.next;
        head.next = pre;
        pre = head;
        head = next;
    }
    returnpre;
}
反序的过程整个链表分成两个部分,前面的代表已反序,后面的代表待反序,反序和待反序
是断开的,所以要注意保存这两条链表的头节点
ListNode next = null;//用来保存待反序的第一个节点(head 和 next节点)
ListNode pre = null;//用来保存已经反序的第一个结点


next = head.next;//首先记录当前节点的下一个节点,(保存起来)
head.next = pre;//让当前节点指向前一个节点,因为要反序嘛
pre = head;//让前一个节点值,取代当前的节点值。因为要继续向下走
head = next;//让下一个节点,取代当前节点。同样是向下走,为下一次循环做准备

0 0