劍指offer 3. 從頭到尾列印連結串列(ListNode,Stack,ArrayList)
阿新 • • 發佈:2018-12-16
題目描述 輸入一個連結串列,按連結串列值從尾到頭的順序返回一個ArrayList。
思路:
因為不熟悉ListNode,所以看了排名第一的程式碼。思路是, 就是把連結串列倒序放入ArrayList,中間使用棧,棧先進後出,就可以自然的倒敘
知識點:
- ListNode是一個連結串列。在節點中,儲存了兩個變數:value 和 next。value 是這個節點的值,next 是指向下一節點的指標,維繫連結串列節點間的關係。當 next 為空指標時,這個節點是連結串列的最後一個節點。
public class ListNode
{
int val;
ListNode next;
public ListNode(int x){
val=x;
}
}
listNode.val
這個指標指的值
listNode.next
到下個指標
- Stack 棧
-1. 建立:
Stack<Integer> stack = new Stack<>();
-2. 三個常用方法: (1)stack.push(item)
把項壓入棧頂,返回item引數 (2)stack.pop()
移除棧頂物件,返回物件 (3)stack.isEmpty()
檢測堆疊是否為空,空返回true,否則false
import java.util.ArrayList;
import java.util.Stack;
public class Solution {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
Stack<Integer> stack = new Stack<>();
//把連結串列的值依次壓入棧
while(listNode != null){
stack.push(listNode.val);
listNode = listNode. next;
}
ArrayList<Integer> arraylist = new ArrayList<>();
//把棧的物件依次移除並新增到ArrayList
while(!stack.isEmpty()){
arraylist.add(stack.pop());
}
return arraylist;
}
}