資料結構04 鏈表面試題分析

2021-09-29 10:41:55 字數 473 閱讀 2800

(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 當鍊表非常長的時候,遞迴實現的會導致函式呼叫層級很深,可能導致呼叫棧溢位。用棧不會出現此類情況,顯然用棧實現 的魯棒性會好一...