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

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

思路:

 ListNode next = null;//用来保存待反序的第一个节点(head 和 next节点)

ListNode pre = null;//用来保存已经反序的第一个结点

next = head.next;//首先记录当前节点的下一个节点,(保存起来)

//先用next保存head的下一个节点的信息,保证单链表不会因为失去head节点的原next节点而就此断裂

head.next = pre;//让当前节点指向前一个节点,因为要反序

//保存完next,就可以让head从指向next变成指向pre了

pre = head;//让前一个节点值,取代当前的节点值。因为要继续向下走

//head指向pre后,就继续依次反转下一个节点

head = next;//让下一个节点,取代当前节点

 //让pre,head,next依次向后移动一个节点,继续下一次的指针反转

 1 /*
 2 public class ListNode {
 3     int val;
 4     ListNode next = null;
 5 
 6     ListNode(int val) {
 7         this.val = val;
 8     }
 9 }*/
10 public class Solution {
11     public ListNode ReverseList(ListNode head) {
12     ListNode pre = null;
13     ListNode next = null;
14     while (head != null) {
15         next = head.next;
16         head.next = pre;
17         pre = head;
18         head = next;
19     }
20     return pre;
21 }
22 }

c++代码:

原文地址:https://www.cnblogs.com/olivegyr/p/7071615.html