從c小白開始自學資料結構 第二天 鍊錶開始

2021-08-14 19:37:42 字數 1179 閱讀 3991

今天因為去了醫院照顧奶奶,所以只學了一上午,不過在醫院做了一道題叫列印沙漏還挺好耍的。

鍊錶簡單的需要記憶的知識點:

定義:n個結點離散分配

彼此通過指標相連

每個結點只有乙個前驅結點,只有乙個後續結點

首節點沒有前驅,尾結點沒有後續

專業術語:

首結點第乙個有效結點

尾結點最後乙個有效結點

頭結點:

頭結點的資料型別和首結點一樣

首結點前加的乙個結點,

頭結點不存放有效資料

為了方便對鍊錶的操作

1、防止單鏈表是空的而設的.當鍊表為空的時候,帶頭結點的頭指標就指向頭結點.如果當鍊表為空的時候,單鏈表沒有帶頭結點,那麼它的頭指標就為null.

2、是為了方便單鏈表的特殊操作,插入在表頭或者刪除第乙個結點.這樣就保持了單鏈表操作的統一性!

3、單鏈表加上頭結點之後,無論單鏈表是否為空,頭指標始終指向頭結點,因此空表和非空表的處理也統一了,方便了單鏈表的操作,也減少了程式的複雜性和出現bug的機會。

4、對單鏈表的多數操作應明確對哪個結點以及該結點的前驅。不帶頭結點的鍊錶對首元結點、中間結點分別處理等;而帶頭結點的鍊錶因為有頭結點,首元結點、中間結點的操作相同 ,從而減少分支,使演算法變得簡單 ,流程清晰。對單鏈表進行插入、刪除操作時,如果在首元結點之前插入或刪除的是首元結點,不帶頭結點的單鏈表需改變頭指標的值,在c 演算法的函式形參表中頭指標一般使用指標的指標(在c+ +中使用引用 &);而帶頭結點的單鏈表不需改變頭指標的值,函式引數表中頭結點使用指標變數即可。

頭指標指向頭結點的指標變數

尾指標指向尾結點的指標變數

如果希望通過乙個函式對鍊錶進行處理,至少需要接受鍊錶的哪些引數

乙個,頭指標

通過頭指標可以推算出鍊錶的其他所有引數

鍊錶的分類

單鏈表雙鏈表

每乙個結點有兩個指標域

迴圈鍊錶

能通過乙個結點找到其他所有結點

非迴圈鍊錶

演算法:遍歷

查詢清空

銷毀求長度

排序刪除結點

插入結點

為什麼鍊錶要返回,陣列不用

訪問乙個單鏈表,必須找到頭結點,然後逐個訪問該鍊錶中的節點

而陣列,是通過陣列名加下標去訪問,陣列名就代表陣列在記憶體中的位址,即陣列中第乙個元素的位址

明天要把這些演算法基本實現嘿巴扎嘿

資料結構第二天

學習資料結構第二天,有點學習心得,所以記錄一下。目前才接觸線性結構的順序表和單鏈表的 說說它們的異同吧。毫無疑問,順序表和單鏈表的共同點就是線性,即元素呈線性排列,單一前繼和單一後繼。並且表示形式都使用打頭的元素位址,有點順藤摸瓜的感覺。不同點就是順序表的物理結構也是順序的,實際上就是位址 而已,好...

c 小白的第二天

今天講一下如何寫乙個簡單的程式。先看一下 include using namespace std int main 這個程式最後輸出hello world.關於標頭檔案,昨天已經講過了,這裡就不再重複了。第二行中的namespace是指識別符號的可見範圍。而第二行讓命名空間std內定義的所有識別符號...

第二天學習資料結構

include include include 完成一部分,只有初始化和輸出,其餘明天繼續 typedef struct list sqlist 動態鍊錶的生成 用單迴圈鍊錶 void initlist sqlist list 初始化鍊錶 void showlist sqlist list void...