題目見書《劍指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在面試的時候,我們需要詢問一下面試官能不能改變鍊錶的結構,問清楚要求之後再進行作答。這裡假設是不改變鍊錶的結構,那麼我們需要遍歷這個鍊錶再進行輸出,注意到倒著列印鍊錶相當於先遍歷的結點要後輸出,後遍歷的結點要先輸出。這和棧的邏輯是一樣的。所以這道題可...