輸入一個鏈表,反轉鏈表後,輸出鏈表的所有元素。
本文考慮的是單鏈表
定義單鏈表
public class ListNode {
int val; //自身值
ListNode next = null; //指向下一個節點
ListNode(int val) {
this.val = val;
}
}
實現類:
public class Solution {
public ListNode ReverseList(ListNode head) {
if(head == null){
return null;
}
//head爲當前節點,pre爲當前節點的前一個節點,dre爲當前節點的後一個節點
ListNode cur = head;
ListNode pre = null;
ListNode dre = null;
while(cur != null){
dre = cur.next;
cur.next = pre;
pre = cur;
cur = dre;
}
return pre;
}
public static void main(String[] args) {
//構建單鏈表
ListNode node1 = new ListNode(1); //val=1,next=null
ListNode node2 = new ListNode(2); //val=2,next=null
ListNode node3 = new ListNode(3); //val=3,next=null
ListNode node4 = new ListNode(4); //val=4,next=null
ListNode node5 = new ListNode(5); //val=5,next=null
node1.next = node2; //val=1,next=val=2,next=null
node2.next = node3;
node3.next = node4;
node4.next = node5;
node5.next = null;
Solution s = new Solution();
ListNode node = s.ReverseList(node1);
while(node != null){
System.out.print(node.val + " ");
node = node.next;
}
}
}