面試題6 從尾到頭列印鍊錶

2021-10-01 09:28:51 字數 964 閱讀 7836

輸入乙個鍊錶,按鍊錶從尾到頭的順序返回乙個arraylist。

占用記憶體:9572k*/

public arraylist

printlistfromtailtohead02

(listnode listnode)

stack

stack =

newstack

<

>()

; listnode p = listnode;

while

(null != p)

int size = stack.

size()

; res =

newarraylist

<

>

(size)

;for

(int i =

0; i < size; i++

)return res;

}

private arraylist

res;

占用記憶體:9424k*/

public arraylist

printlistfromtailtohead01

(listnode listnode)

recursion

(listnode,1)

;return res;

}public

void

recursion

(listnode listnode,

int n)

recursion

(listnode.next, n +1)

; res.

add(listnode.val)

;}

總結:遞迴的**看起來很簡潔,但有乙個問題:當鍊表非常長的時候,就會導致函式呼叫的層級很深,從而有可能導致函式呼叫棧溢位。顯然基於迴圈實現的棧的**的魯棒性要好一些。

面試題6 從尾到頭列印鍊錶

一 題目 輸入乙個鍊錶的頭結點,從尾到頭反過來列印出每個結點的值。二 關鍵 後進先出 的例子,因此可以使用棧 遞迴來實現功能。三 解釋 四 其他方法 把鍊錶中的指標反轉過來。使用兩個指標,p1和p2,p1的初始值是表頭,p2的初始值是p1 next,只要p2 null,那麼就進行p1 next p2...

面試題6 從尾到頭列印鍊錶

輸入乙個鍊錶的頭節點,從尾到頭反過來列印出每個節點的值。鍊錶節點定義如下 struct listnode 從尾到頭列印,能否改變原來的鍊錶?是否允許修改輸入資料 1.能改變原來的鍊錶,將鍊錶的指標反過來。2.使用棧 遞迴 插入節點 在鍊錶的尾端插入乙個節點 若煉表為空,則頭指標的值會改變 所以要使用...

面試題6 從尾到頭列印鍊錶

題目 輸入乙個鍊錶的頭結點,從尾到頭反過來列印出每個結點的值 思路 逆向輸出,如果不改變鍊錶的結構,可借助棧實現該功能,因為棧有 先進後出 的特點。include include using namespace std typedef struct listnode listnode 在末尾增加乙個...