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

2021-09-29 01:43:30 字數 1059 閱讀 9176

鍊錶結點的定義如下:

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...