輸入乙個鍊錶,從尾到頭列印鍊錶每個節點的值。

2021-08-03 12:49:13 字數 1058 閱讀 5984

輸入乙個鍊錶,從尾到頭列印鍊錶每個節點的值。 

輸入描述:

輸入為鍊錶的表頭
輸出描述:

輸出為需要列印的「新鍊錶」的表頭

解決這個問題肯定要遍歷鍊錶。遍歷的順序是從頭到尾的順序,可輸出的順序卻是從尾到頭。也就是說第乙個遍歷到的結點最後乙個輸出,而最後乙個遍歷到得結點第乙個輸出。這就是典型的「後進先出」,可以用棧實現這種順序。每經過乙個結點的時候,把該結點放到乙個棧中。當遍歷完整個鍊錶後,再從棧頂開始逐個取出節點的值,放入vector容器中。

1

//鍊錶結構體定義

2struct

listnode 8};

910class

solution

2223

while (!nodes.empty())

28return

result;29}

30 };

遞迴在本質上就是乙個棧結構,於是很自然地想到用遞迴來實現 要實現反過來輸出鍊錶每訪問到乙個結點的時候, 先遞迴輸出它後面的結點,再輸出該結點自身,這樣鍊錶的輸出結構就反過來了。

1

struct

listnode 7};

89void printlistfromtailtohead(listnode*plisthead)

1617

//and then print the current node

18 print("

%d",plisthead->val);19}

20 }

每訪問到乙個結點的時候,取出節點的值放入容器中,最後使用翻轉函式reverse()將容器翻轉。

1

struct

listnode 7};

89class

solution

1920 reverse(result.begin(),result.end());//

21return

result;22}

23 };

從尾到頭列印乙個鍊錶

這樣的鍊錶問題時不時的出現,你有沒有特定的方法去處理呢 以下給出你可能用到的演算法 第一種 改變鍊錶的結構 思想 1.從尾到頭列印鍊錶,那就逆置鍊錶唄 2.列印逆置後的鍊錶 這個簡單,直接上 void printlistrevers listnode phead 2.列印逆置鍊錶 listnode ...

從尾到頭列印乙個鍊錶

這樣的鍊錶問題時不時的出現,你有沒有特定的方法去處理呢 以下給出你可能用到的演算法 第一種 改變鍊錶的結構 思想 1.從尾到頭列印鍊錶,那就逆置鍊錶唄 2.列印逆置後的鍊錶 這個簡單,直接上 void printlistrevers listnode phead 2.列印逆置鍊錶 listnode ...

鍊錶一 從尾到頭列印鍊錶

題目 從尾到頭列印鍊錶 描述 輸入乙個鍊錶,從尾到頭列印鍊錶每個節點的值。解決方案 方法一 反轉鍊錶後進行遍歷 方法二 使用額外空間棧 方法三 遞迴 public class one while pre null return pre 額外使用空間棧 public static arraylistp...