資料結構詳解 鍊錶

2021-08-21 14:18:54 字數 1370 閱讀 5187

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

刪除與插入:

在新增與儲存方面,鍊錶要比陣列更為方便,下列圖中更能說明.

1.這是陣列刪除和插入的操作**:

2.這是鍊錶的刪除與插入操作**:

有100000行陣列,每行資料最多有100000,但最後只有800000的資料,怎麼辦呢?

1.陣列:a[100000][100000]…….??

2.鍊錶:這個十分合適,我們可以用乙個陣列head儲存每一行資料的頭,跟劇每乙個頭去確定每一行數列的順序,這樣就可以吧空間壓縮到了線性,那麼就可以方便儲存了.

陣列可以實現o(1)查詢,但是鍊錶卻是需要通過遍歷的,在這一方便時間複雜度並不是最優的

for (int i=first[k];i!=0;i=link[i].next])

cout

cout

<

同**.1.插入:將前乙個元素的next指向插入的節點,將前乙個這個元素的next指向原來元素指向的next節點即可

2.刪除:將前乙個元素的next直接指向當前刪除元素的next即可

給定m個操作,規定:

1.輸入乙個資料,在尾部插入

2.輸入乙個資料,查詢鍊錶中是否有這個資料

3.輸入乙個資料,在鍊錶中刪除最前面的這個數

4.輸出鍊錶

**如下:

#include

using namespace std;

struct linknote

link[10000];

int first=0,last=0,cnt=0;

void push(int num)

void ask(int num)

cout<

return;

}void pop(int num)

if (!first) last=0;

return;

}return;

}void write()

int main()

return

0;}

資料結構 鍊錶詳解

1.什麼是鍊錶?鍊錶是一種物理儲存單元上非連續 非順序的儲存結構,資料元素的邏輯順序是通過鍊錶中的指標鏈結次序實現的。鍊錶由一系列結點 鍊錶中每乙個元素稱為結點 組成,結點可以在執行時動態生成。2.鍊錶和陣列的區別?線性表包括陣列和鍊錶兩種,陣列是採用連續的儲存空間,陣列具有隨機儲存的特性,什麼是隨...

資料結構 鍊錶詳解

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

資料結構之 鍊錶詳解

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