反轉連結串列(遞迴與棧)
輸入一個連結串列,反轉連結串列後,輸出新連結串列的表頭。
1)
使用一個棧來實現:
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
import java.util.*;
public class Solution {
public ListNode ReverseList(ListNode head) {
if(head == null || head.next == null){
return head;
}
Stack<ListNode> stack = new Stack<ListNode>();
ListNode pre = null;
while(head.next != null){
stack.push(head);
head = head.next;
}
pre = head;
while(!stack.isEmpty()){
head.next = stack.pop();
head = head.next;
}
head.next = null;
return pre;
}
}
2)使用遞迴的方式來實現
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode ReverseList(ListNode head) {
ListNode firstNode;
if(head==null)return null;
if(head.next==null){
firstNode=head;
return head;
}
ListNode q=head.next;
ListNode ph=ReverseList(q);
q.next=head;
head.next=null;
return ph;
}
}
相關文章
- 實現反轉連結串列--遞迴、迭代、雙指標、棧遞迴指標
- 反轉連結串列系列題練習遞迴遞迴
- 連結串列與遞迴遞迴
- Python實現連結串列反轉的方法【迭代法與遞迴法】Python遞迴
- 連結串列反轉非遞迴演算法!看不懂打死我!遞迴演算法
- 反轉連結串列
- 一文讀懂連結串列反轉(迭代法和遞迴法)遞迴
- #反轉連結串列_C++版 #反轉連結串列_Java版 @FDDLCC++Java
- 利用遞迴方法實現連結串列反轉、前N個節點反轉以及中間部分節點反轉遞迴
- 1025 反轉連結串列
- 264反轉連結串列
- leetcode 反轉連結串列LeetCode
- leetcode 92 反轉連結串列ⅡLeetCode
- 連結串列反轉問題
- 206. 反轉連結串列
- 【LeetCode-連結串列】面試題-反轉連結串列LeetCode面試題
- C++:用棧實現反轉連結串列,超簡單!C++
- 資料結構之連結串列:206. 反轉連結串列資料結構
- 反轉連結串列、合併連結串列、樹的子結構
- [leetcode 92] 反轉連結串列 IILeetCode
- 反轉連結串列系列問題
- leetcode206. 反轉連結串列LeetCode
- leetcode 206. 反轉連結串列LeetCode
- java實現連結串列反轉Java
- leetcode 206.反轉連結串列LeetCode
- JZ-015-反轉連結串列
- TypeScript 實現連結串列反轉TypeScript
- 反轉一個單連結串列。
- 連結串列-迴圈連結串列
- Golang從合併連結串列聊遞迴Golang遞迴
- **203.移除連結串列元素****707.設計連結串列****206.反轉連結串列**
- LeetCode-092-反轉連結串列 IILeetCode
- LeetCode-Python-(206)反轉連結串列LeetCodePython
- 反轉相鄰連結串列單元
- leetCode206 反轉連結串列ILeetCode
- 連結串列4: 迴圈連結串列
- C++單連結串列遞迴遍歷操作C++遞迴
- 資料結構與演算法——歸併排序: 陣列&連結串列&遞迴&非遞迴解法全家桶資料結構演算法排序陣列遞迴