1. 程式人生 > >26、輸入一個鏈表,反轉鏈表後,輸出鏈表的所有元素。

26、輸入一個鏈表,反轉鏈表後,輸出鏈表的所有元素。

分享 png 輸出 nod src 繼續 -1 space next

輸入一個鏈表,反轉鏈表後,輸出鏈表的所有元素。

思路:

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

技術分享

26、輸入一個鏈表,反轉鏈表後,輸出鏈表的所有元素。