資料結構c 實現(單鏈表說明)

2021-10-19 12:04:49 字數 1360 閱讀 7036

單鏈表是線性表的鏈式儲存方式,鏈式結構說白了就是用指標來實現陣列的操作罷了,但是很難(qwq),---------- 尤其是我c語言一塌糊塗,所以指標壓根就沒怎麼搞懂,哈哈哈,其實我覺得只用會用了自然就懂了,所以加油吧。quq

單鏈表的特點在於邏輯上相鄰的元素其物理上不一定相鄰,也就是說它是一種非隨機儲存的儲存結構,需要通過一系列的指標來進行操作。

typdef struct  lnode  lnode, *linklist;
這裡我們可以注意一下 lnode , 和 *linklist , 他們分別是 struct lnode 定義的乙個變數和乙個指標, 由於我們這裡用了typdef 關鍵字, 所以我們在main函式裡也可直接用linklist 來宣告單鏈表;

int

main

(void

)

ps: 這裡我們可以思考一下, 為什麼不能用以下這種方式定義單鏈表:

int

main

(void

)

,,,原因很簡單,因為你的單鏈表中相關函式的操作就是針對單鏈表的,但是lnode只不過是乙個你設定的結構體變數,並不是指標,而函式對於單鏈表的操作本身是對於指標的操作,所以我們得用上面的兩種操作。

其實對於lnode * 和 linklist 想要理解也不是特別簡單,尤其是新人,比如下面兩段**:

void

createlist_l

(linklist &l,

int n)

}

linklist  list_tailinsert

(linklist &l)

}

通過上面兩段**可以看出, lnode* 和 linklist 的含義是相同的,都是 lnode 的乙個指標,但是他們的側重點不同:

lnode * 強調節點, linklist 強調鍊錶

這裡為了怕搞混淆,其實可以理解為,當你的操作是需要建立或者對錶進行相關操作時,你就用linklist, 如果是需要用到結點的相關操作,比如刪除,或者增加某個結點, 你就用lnode *;

單鏈表的其他操作以及c++實現放到下面一篇,這篇先水一波(qwq)

在加一點,因為單鏈表有帶頭結點和不帶頭結點兩種操作,但是由於水平有限,所以在接下來的文章只會介紹單鏈表帶頭節點的相關操作和**實現,至於不帶頭結點的,可以看看然後自己理解理解就行。

啊,,, 指標這玩意想要好好理解確實很麻煩,我上面寫的這麼些東西不過是想強調兩件事:

單鏈表是對指標的線性操作;

linklist 是用來強調單鏈表的,而lnode * 是用來強調結點的。

資料結構 單鏈表C實現

什麼叫結構體?就是能夠將不同資料型別集合在一起構造乙個新的資料型別的東西,它有乙個注意點就是不能引用自身作為結構體成員,為什麼呢?因為在建立這種型別的結構體變數時計算機無法得知給結構體變數分配多大的記憶體導致編譯器報錯,提示非法操作。那麼為什麼計算機無法給結構體變數分配某個固定記憶體呢?是這樣的,如...

資料結構 單鏈表(C 實現)

單鏈表是一種鏈式訪問的資料結構,用一組位址任意的儲存單元存放線性表中的資料元素。鍊錶中的資料是以結點來表示的,每個結點的構成 元素 資料元素的映象 指標 指示後繼元素儲存位置 元素就是儲存資料的儲存單元,指標就是連線每個結點的位址資料。單鏈表基本操縱的實現 包含頭結點 include define ...

C 實現資料結構 單鏈表

2020年8月7日 周五 天氣晴 不悲嘆過去,不荒廢現在,不懼怕未來 用c 實現了簡單的單鏈錶類,功能包括插入 刪除 查詢相關元素,分離鍊錶等操作。是用vs2019實現的,每個函式的功能都新增了一定注釋,完整工程放在了我的github上,有需要的也可以自取。license gnu general p...