思路:
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開始的所有結點都沒有反轉。這樣...