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++代码:

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM