/**
* definition for singly-linked list.
* struct listnode
* };
*/class
solution
reverse
(result.
begin()
,result.
end())
;return result;}}
;
但是每次在vector的頭部插入資料特別耗時
而方法乙隻需要4ms
class
solution
//nodes出棧操作,棧不為空就一直pop
listnode* pnode;
while
(!nodes.
empty()
)return result;}}
;
遞迴在本質上就是乙個棧結構,每次訪問乙個節點的時候,
先遞迴訪問輸出後面的節點,在輸出該節點本身,這樣就實現了翻轉。
class
solution
private
: vector<
int> result;
void
reverseprintlist_recursive
(listnode* head)
result.
push_back
(head-
>val);}}};
問題:當鍊表非常長的時候,函式呼叫的層級很深,可能導致函式調動棧溢位。
所以用棧實現的**魯棒性會更好!
劍指offer面試題6 從尾到頭列印鍊錶
題目見書 劍指offer 58頁 程式設計思路,鍊錶資料用棧儲存,利用棧先進後出的性質列印鍊錶。面試題6 從尾到頭列印鍊錶 include include includeusing namespace std 單項鍊表的結點定義 struct listnode 用棧來實現 void printlis...
劍指offer 面試題6 從尾到頭列印鍊錶
輸入乙個鍊錶,按煉錶值從尾到頭的順序返回乙個vector。現將鍊錶反轉,然後在從頭到尾輸出。但這種方法會改變原來鍊錶的結構。時間複雜度 空間複雜度 遍歷鍊錶的順序是從頭到尾,輸出的順序是從尾到頭。也就是說,第乙個遍歷到的節點最後乙個輸出,最後乙個遍歷到的節點第乙個輸出。這就是典型的 後進先出 可以用...
劍指Offer 面試題6(從尾到頭列印鍊錶)
人生在世,會遇到一些好事,也會遇到些壞事,好事承擔得起,壞事也得承得住,就這樣坦蕩蕩做個尋常人也不壞!王小波 盛裝舞步 題目描述 輸入乙個鍊錶的頭結點,從尾到頭反過來列印出每個結點的值。示例 include utilities list.h include void printlistreversi...