鍊錶結點的定義如下:
struct listnode
在面試的時候,我們需要詢問一下面試官能不能改變鍊錶的結構,問清楚要求之後再進行作答。這裡假設是不改變鍊錶的結構,那麼我們需要遍歷這個鍊錶再進行輸出,注意到倒著列印鍊錶相當於先遍歷的結點要後輸出,後遍歷的結點要先輸出。這和棧的邏輯是一樣的。所以這道題可以建立乙個棧,每訪問乙個結點就將其入棧,訪問鍊錶結束後將棧裡面的結點的資料依次進行輸出,這樣就可以得到倒著列印出的結果。
#include #includeusing namespace std;
struct listnode ;
void printlistreversingly_iteratively(listnode* phead)
while (!nodes.empty())
}
前面想到了棧的方法來實現這個函式,而遞迴在本質上就是乙個棧結構,於是很自然的想到了用遞迴來實現。要實現反過來實現輸出鍊錶,我們每訪問到乙個結點的時候,先遞迴輸出它後面的結點,再輸出該結點自身,這樣鍊錶的輸出結果就反過來了。
#include #includeusing namespace std;
struct listnode ;
void printlistreversingly_recursively(listnode* phead)
printf("%d\t", phead->m_nkey);
}}
複習:
二刷**:
struct listnode
;void printlistreversingly_lteratively(listnode*phead)
while (!nodes.empty()) }
void printlistreversingly_recursively(listnode*phead)
printf("%d\t", phead->m_nkey);
}
劍指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...