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

2021-09-07 00:20:08 字數 829 閱讀 2544

輸入乙個鍊錶的頭結點,從尾到頭反過來列印每個結點的值。

鍊錶結點定義:

struct listnode;

1、改變鍊錶結構的話,先反轉鍊錶,然後從頭到尾列印每個結點的值。(後續博文會有相關實現,這裡就暫不實現)

2、無需改變鍊錶結構,使用棧,遍歷整個鍊錶,將結點依次入棧,然後再依次出棧,實現「後進先出」。

3、無需改變鍊錶結構,遞迴實現,如果鍊錶結點數過多的話,可能會導致棧溢位。

void printlistreversingly_iteratively(listnode* phead)

while(!nodes.empty())

coutcout}void printlistreversingly_recursively_2(listnode* phead)

}

ac**:

/**

* struct listnode

* };

*/class solution

return;

}vectorprintlistfromtailtohead(struct listnode* head)

};

/**

* struct listnode

* };

*/class solution

reverse(nodes.begin(),nodes.end());

return nodes;

}};

從尾到頭列印單鏈表(劍指offer面試題5)

題目 輸入乙個鍊錶的頭結點,從尾到頭反過來列印出每個結點的值。分析 此題考察單鏈表的理解和應用,為了實現列印,必須先建立乙個單鏈表,頭結點可有可無,但有頭結點和無頭結點在程式設計上是應該注意的,反向列印思路不一樣,這裡以包含頭結點舉例分析,單鏈表以尾部插入方式建立,頭結點資料域為空,頭結點指標指向下...

劍指Offer 面試題5 從尾到頭列印鍊錶

題目 輸入乙個鍊錶的頭結點,從尾到頭反過來列印每個節點的值.分析1 通常,列印是乙個唯讀操作,我們不希望列印的同時去修改原資料的內容.故我們不能改變鍊錶的結構.解決這個問題肯定是需要遍歷鍊錶的,但是遍歷的順序是從頭到尾的,可輸出的順序確實從尾到頭,也就是說第乙個遍歷到的節點最後乙個輸出,最後乙個遍歷...

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

題目 輸入乙個鍊錶的頭結點,從尾到頭反過來列印出每個結點的值。public void invertedlist1 listnode head listnode p head stack integer stack new stack integer while p null while stack ...