鍊錶其實和陣列一樣,可以儲存一串元素.但又與陣列不同,那就是陣列是以下標進行儲存的,例如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...