劍指offer 逆向輸出鍊錶

2021-09-19 09:11:56 字數 475 閱讀 1078

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

解法二:使用棧的「先進後出」特點,從頭到尾遍歷的過程中依次入棧,再從棧中取出元素輸出。需要借助棧的儲存結構。

**實現:

public static void printnode(node node)

while (!stack.isempty())

}

解法三:根據解法二很自然能想到使用遞迴的方式求解,因為遞迴本質上就是乙個棧結構。每次訪問時,先遞迴輸出它後面的節點,再輸出該節點,實現逆向輸出。缺點是鍊錶很長的時候,會導致遞迴層級更深,從而引發棧溢位。相對而言使用棧基於迴圈實現的**魯棒性更好。

**實現:

public static void printnode(node node)

system.out.println(node.val);

}}

劍指offer03逆向輸出鍊錶

輸入乙個鍊錶,按鍊錶從尾到頭的順序返回乙個arraylist。先反轉鍊錶,再存入vector 注意鍊錶 next的時候,都判斷下此時是否為空,不然很容易越界 struct listnode class solution 將鍊錶反置 listnode pre head listnode t pre n...

劍指offer 鍊錶

單向鍊錶的結構定義 typedef int datatype struct listnode 問題1 往鍊錶的末尾新增乙個結點 給定頭結點,往末尾插入乙個結點 void insertnode listnode head,datatype key listnode p head while p nex...

劍指offer 鍊錶

鍊錶 鍊錶是一種動態資料結構 struct listnode 往鍊錶的末尾新增乙個節點的c 程式如下 void addtotail listnode phead,int value 注意第乙個引數phead是乙個指向指標的指標。當我們往乙個空鍊錶插入乙個結點時,else pnode m pnext ...