資料結構 鍊錶詳解

2021-09-09 07:53:15 字數 1430 閱讀 2505

1.什麼是鍊錶?

鍊錶是一種物理儲存單元上非連續、非順序的儲存結構,資料元素的邏輯順序是通過鍊錶中的指標鏈結次序實現的。鍊錶由一系列結點(鍊錶中每乙個元素稱為結點)組成,結點可以在執行時動態生成。

2.鍊錶和陣列的區別?

線性表包括陣列和鍊錶兩種,陣列是採用連續的儲存空間,陣列具有隨機儲存的特性,什麼是隨機儲存特性,也就是說num[i] 的時間複雜度是o(1),陣列的缺點在於:在頭部插入時 時間複雜度為o(n),頭部刪除時時間複雜度為o(n).插入刪除的平均時間複雜度為o(n-1/2). 陣列是連續的而儲存空間,所以儲存空間是固定的,遇到儲存空間不足的時候需要擴充儲存空間,比較麻煩。

c++中陣列是一種基本資料結構  int array, vector等來表示陣列, vector是封裝好的陣列。

總結:

陣列的優點:隨機訪問性強,查詢速度快。

陣列的缺點:插入和刪除效率低,可能浪費記憶體,記憶體空間要求高,必須有足夠的連續記憶體空間,陣列大小固定,不能動態拓展

鍊錶的優點:插入刪除速度快,記憶體利用率高,不會浪費記憶體,大小沒有固定,拓展很靈活。

鍊錶的缺點:不能隨機查詢,必須從第乙個開始遍歷,查詢效率低。

3.線性表之鍊錶**展示:由資料域和指標域組成,資料域是當前鍊錶的內容,指標域存放指向下個節點的指標。

struct listnode

4.鍊錶增加資料:

頭插法:

listnode *head;

head->next=null;

listnode *p=new listnode(-1);

p->next=head->next;

head->next=p;

尾插法:

listnode *head;

head->next=null;

listnode *p=new listnode(-1);

listnode *tail;

tail->next=p;

tail=tail->next;

5.鍊錶增加節點(新增s):

s->next=p->next;

p->next=s;

6.鍊錶刪除節點(p):

listnode *p=s->next;

s->next=s->next->next;

delete p;

資料結構詳解 鍊錶

鍊錶其實和陣列一樣,可以儲存一串元素.但又與陣列不同,那就是陣列是以下標進行儲存的,例如a 1 a 2 a 3 等,而鍊錶則是根據許多數字的前後關係的數字進行儲存的,其原理類似於圖論中的鄰接表,所儲存的序列並不是有序的,而是儲存這個數的前面 next 和這個數的後面 pre 來得到這一串有序的序列的...

資料結構 鍊錶詳解

本篇隨筆就資料結構 鍊錶進行講解。鍊錶是一種特別實用的資料結構,我把它理解為陣列的公升級版,也就是在陣列的基礎上,它能做到在任意位置新增或者刪除元素,而不影響其他元素。鍊錶還是我們進行圖論學習時,圖的常用儲存方式 鄰接表 鏈式前向星 的實現基礎。學習鍊錶需要讀者具有一定的語法基礎,最好會一點點指標。...

資料結構之 鍊錶詳解

cpp view plain copy typedef struct lnode cpp view plain copy void initlist linklist l 樂樂站在第乙個,星星站在樂樂 的前面,呆子站在星星的前面 依次排列,這樣樂樂會最終站在隊尾 這就是頭插法建立單鏈表 cpp vi...