面試題 實現單鏈表的逆序

2021-07-24 08:22:52 字數 551 閱讀 8201

思路:

1.找到頭結點

2.依次遍歷每個結點,並且每次都插到第乙個結點之後

3.頭結點.next = null;稱為尾節點

迴圈方式**實現:

list func(list head)

list pre = head; //把頭結點給了pre

list cur = pre.next;

list tmp; //定義乙個結點以便迴圈幅值使用

pre.next = null; //將首結點的next置空,迴圈結束後,成為尾結點

while(null != cur) //一直迴圈,直到遇見尾結點

return pre; //返回頭結點

}

如有錯誤請大家提出,明天寫遞迴方式的實現。

遞迴演算法的實現:

list

*func(list

*oldlist,list

*newhead =

null)

面試題 單鏈表實現棧

程式設計實現下面的棧頂操作 class mydata 解析 顯然這裡需要實現棧的3種基本操作,即進棧 出棧以及判空。為了方便起見,使用單鏈表結構實現棧並且使用類的形式來定義站內及其節點。首先是節點類和棧類的具體定義,程式 如下 include using namespace std class my...

單鏈表的面試題

自定義標頭檔案部分 void deletenottail pnode pos 刪除乙個無頭單鏈表的非尾節點 void insertnothead pnode phead,pnode pos,datatype data 在無頭單鏈表的乙個非頭節點前插入乙個節點 void josephcircle pn...

面試題 單鏈表反轉

問題 定義乙個函式,輸入乙個鍊錶的頭結點,反轉該鍊錶並輸出反轉後鍊錶的頭結點。一 非遞迴演算法 假設有鍊錶a b c d e f g。在反轉鍊錶過程中的某一階段,其鍊錶指標指向為 a b c d e f g。也就是說在結點d之前的所有結點都已經反轉,而結點d後面的結點e開始的所有結點都沒有反轉。這樣...