(1)求單鏈表中節點的個數
迴圈遍歷,每次加一,當節點的下乙個節點為空時,迴圈結束
(2)查詢單鏈表中的倒數第k個節點
先迴圈遍歷出鍊錶的總節點數(n),減去k即為正序查詢的第(n-k)個節點
(3)單鏈表的反轉
定義乙個空的鍊錶和頭節點
迴圈單鏈表,將單鏈表的節點按順序放入新建的鍊錶中,每次在新建鍊錶的頭節點後面放入
(4)從尾到頭列印單鏈表
先將鍊錶反轉,之後按順序遍歷
(5)合併兩個有序的單鏈表,合併之後的鍊錶依然有序,假設順序為從小到大
先定義乙個空的鍊錶作為合併鍊錶
定義兩個while死迴圈,按第乙個鍊錶的順序迴圈
同時巢狀的第二個while迴圈判斷自己的節點是否小於第乙個鍊錶迴圈的節點
如果小於,則第二個鍊錶的節點先放;如果大於,則第乙個鍊錶的節點先放,並跳出裡面的迴圈
直到第乙個鍊錶的next為空時,鍊錶合併完成
資料結構 鏈表面試題總
以下 是在vs2013下編寫的 我們先來看一下測試結果 include include include include 鍊錶的定義 typedef int datatype typedef struct slistnode slistnode 初始化 void slistinit slistnode...
線性結構 鏈表面試題
一 從尾到頭列印單鏈表 法一 遞迴法 void slistnoderecurreverseprint slistnode phead 法二 常規法 void slistnodetwoprint slistnode phead pend pcur 使pend前進一位 printf d pend dat...
鏈表面試題
不改變鍊錶結構,從尾到頭列印單鏈表 遞迴實現 void printlistrevers recursively plist phead printf d phead data 當鍊表非常長的時候,遞迴實現的會導致函式呼叫層級很深,可能導致呼叫棧溢位。用棧不會出現此類情況,顯然用棧實現 的魯棒性會好一...