1. 程式人生 > >劍指offer 3. 從頭到尾列印連結串列(ListNode,Stack,ArrayList)

劍指offer 3. 從頭到尾列印連結串列(ListNode,Stack,ArrayList)

題目描述 輸入一個連結串列,按連結串列值從尾到頭的順序返回一個ArrayList。

思路:

因為不熟悉ListNode,所以看了排名第一的程式碼。思路是, 就是把連結串列倒序放入ArrayList,中間使用棧,棧先進後出,就可以自然的倒敘

知識點:

  1. ListNode是一個連結串列。在節點中,儲存了兩個變數:value 和 next。value 是這個節點的值,next 是指向下一節點的指標,維繫連結串列節點間的關係。當 next 為空指標時,這個節點是連結串列的最後一個節點。
public class ListNode
{
    int val;
    ListNode next;
    
    public
ListNode(int x){ val=x; } }

listNode.val這個指標指的值 listNode.next到下個指標

  1. 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; } }