我們至少可以用兩種方式儲存資料
1、陣列
優點:儲存速度快
缺點:需要乙個連續的很大的記憶體;插入和刪除元素的效率很低。
陣列每個單元只儲存元素的實際值
2、鍊錶
優點:插入刪除元素的效率高;不需要乙個連續大的記憶體
缺點:查詢元素效率低
鍊錶每個單元分兩部分,左邊儲存實際元素值,右邊儲存下乙個元素的指標
鍊錶術語:
頭結點:頭結點的資料型別和首節點的型別一樣;頭結點是首節點前面的那個節點;頭結點並不儲存有效資料;設定頭結點的目的是為了方便對鍊錶的操作
頭指標:存放頭結點位址的指標變數;知道頭指標就可以不用知道頭結點(*頭指標 == 頭結點)
首節點:存放第乙個有效資料的節點;知道首節點就可以不用知道尾節點(因為尾節點的指標域(右側)為空)
尾節點:存放最後乙個有效資料的節點
頭指標和頭結點的異同:
頭指標是指鍊錶指向第乙個節點的指標,若煉表有頭結點,則是指向頭結點的指標;
頭指標具有標識作用,所以常用頭指標冠以鍊錶的名字;
無論鍊錶是否為空,頭指標均不為空。頭指標是鍊錶的必要元素。
頭結點是為了操作的統一和方便而設立的,放在第一元素的節點之前,其資料域一般無意義(也可存放鍊錶的長度);
有了頭結點,對在第一元素節點前插入節點和刪除節點,其操作與其它結點的操作就統一了;
頭結點不一定是鍊錶的必要元素。
c 語言鍊錶 筆記
鍊錶初始化時需要二級指標 此處的二級指標即,pphead指向phead指向的值 nodetype phead null crealist phead 傳位址 static void crealist nodetype pphead nodetype phead null crealist phead...
雙向鍊錶筆記
雙向鍊錶增刪,準備未來複習自己用 include using namespace std typedef struct node node 測試雙向鍊錶 void showlink node p puts 雙向鍊錶插入 void addnode node head,node tail 在中間新增 w...
核心雙向鍊錶筆記
遇到乙個這個樣的定義static list create table done list 居然沒有宣告table done list 這個變數 跟蹤 define list create name struct list name list init name 可以看到list create是乙個巨...