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

2021-09-11 05:17:52 字數 1002 閱讀 5628

題目見書《劍指offer》58頁;

程式設計思路,鍊錶資料用棧儲存,利用棧先進後出的性質列印鍊錶。

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

#include#include#includeusing namespace std;

//單項鍊表的結點定義

struct listnode

;//用棧來實現

void printlistreversingly_iteratively(listnode* phead)

while (!nodes.empty())

cout << endl;

}//用遞迴來實現

void printlistreversingly_recursively(listnode* phead)

/*printf("%d\t", phead->m_nvalue);*/

cout << phead->m_nvalue << " "; }}

int main()

; for (int i = 0; i < 5; i++)

//以上程式段是利用陣列生成乙個鍊錶,生成的鍊錶phead為,可以看出多了初始頭結點0

listnode *temp = phead->m_pnext;//去掉初始頭結點

cout << "利用棧方法從尾到頭反過來列印鍊錶的值如下:" << endl;

printlistreversingly_iteratively(temp);

cout << "利用遞迴方法從尾到頭反過來列印鍊錶的值如下:" << endl;

printlistreversingly_recursively(temp);

cout << endl;

system("pause");

return 0;

}

結果:

參考部落格:

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

輸入乙個鍊錶,按煉錶值從尾到頭的順序返回乙個vector。現將鍊錶反轉,然後在從頭到尾輸出。但這種方法會改變原來鍊錶的結構。時間複雜度 空間複雜度 遍歷鍊錶的順序是從頭到尾,輸出的順序是從尾到頭。也就是說,第乙個遍歷到的節點最後乙個輸出,最後乙個遍歷到的節點第乙個輸出。這就是典型的 後進先出 可以用...

劍指Offer 面試題6(從尾到頭列印鍊錶)

人生在世,會遇到一些好事,也會遇到些壞事,好事承擔得起,壞事也得承得住,就這樣坦蕩蕩做個尋常人也不壞!王小波 盛裝舞步 題目描述 輸入乙個鍊錶的頭結點,從尾到頭反過來列印出每個結點的值。示例 include utilities list.h include void printlistreversi...

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

鍊錶結點的定義如下 struct listnode在面試的時候,我們需要詢問一下面試官能不能改變鍊錶的結構,問清楚要求之後再進行作答。這裡假設是不改變鍊錶的結構,那麼我們需要遍歷這個鍊錶再進行輸出,注意到倒著列印鍊錶相當於先遍歷的結點要後輸出,後遍歷的結點要先輸出。這和棧的邏輯是一樣的。所以這道題可...