劍指 Offer 006 從尾到頭列印鍊錶

2022-09-04 18:42:13 字數 1303 閱讀 9958

輸入乙個鍊錶的頭節點,從尾到頭反過來返回每個節點的值(用陣列返回)。

直接能想到的方法,將鍊錶遍歷一遍,遍歷的同時將節點值壓棧,最後依次出棧。

// c++

// 使用棧實現

vectorreverseprint(listnode *head)

while (!nodes.empty())

return res;

}

// python

# 利用棧

def reverseprint2(head: listnode) -> list[int]:

stack =

node = head

while node:

node = node.next

return stack[::-1]

// c++

// 使用遞迴實現

void reverseprint2(listnode *head)

cout << head->val << endl;

}

//python

# 遞迴

def reverseprint(head: listnode) -> list[int]:

return reverseprint(head.next) + [head.val] if head else

遍歷鍊錶的同時,將鍊錶反轉

// c++

// 修改鍊錶結構

void reverseprint3(listnode *head)

while(node!=nullptr)

}

// python

def reverseprint3(head: listnode) -> list[int]:

node = head

prenode = none

nextnode = head

while nextnode:

nextnode = node.next

node.next = prenode

prenode = node

if nextnode:

node = nextnode

ret =

while node:

ret += node.val

node = node.next

return ret

劍指offer 從尾到頭列印列表

1.方法一 看到這道題的時候,我的最初想法是鍊錶翻轉,在輸出。在原書中作者認為這不是最好的解決辦法,因為這樣會改變鍊錶的原來的結構,如果在面試中遇到類似的問題,應該主動詢問面試官這樣的方發是否可行。1.方法二 鍊錶的逆序列印,首先肯定要遍歷鍊錶,可是輸出的順序卻是從尾到頭。也就是說,第乙個遍歷到的節...

劍指Offer 從尾到頭列印鍊錶

題目1511 從尾到頭列印鍊錶 時間限制 1 秒 記憶體限制 128 兆 特殊判題 否 提交 1082 解決 350 題目描述 輸入乙個鍊錶,從尾到頭列印鍊錶每個節點的值。輸入 每個輸入檔案僅包含一組測試樣例。每一組測試案例包含多行,每行乙個大於0的整數,代表乙個鍊錶的節點。第一行是鍊錶第乙個節點的...

劍指offer 從尾到頭列印鍊錶

輸入乙個鍊錶,從尾到頭列印鍊錶每個節點的值。輸入描述 輸入為鍊錶的表頭 輸出描述 輸出為需要列印的 新鍊錶 的表頭 分析 題目本意是用的棧結構的先入後出,但是有了容器類的高階方法之後,使用棧的意義就不大了。c struct listnode class solution listnode p hea...