一 鍊錶 插入刪除基本操作

2021-08-20 04:08:38 字數 1271 閱讀 4588

鍊錶:一種用於儲存資料集合的資料結構

鍊錶的屬性:1. 相鄰元素之間通過指標連線

2.最後乙個元素的後繼元素為null

3.鍊錶的空間可以按需分配(直到系統記憶體耗盡)

4.沒有記憶體空間的浪費(但是鍊錶當中的指標需要一些額外的記憶體花銷)

鍊錶和陣列的區別:

(1)陣列儲存在一塊連續的記憶體空間中,而鍊錶的儲存位置不是連續的

(2)當陣列規模很大時,有時沒辦法分配能儲存整個陣列的空間,鍊錶則不需要考慮

(3)陣列的大小是靜態的,鍊錶可以在常數時間內進行擴充套件

(4)陣列存在陣列下標元素之間又是物理相鄰的,所以陣列的記憶體位址可以通過:資料型別儲存空間的大小*陣列下標+基位址 進行計算,因為運算執行的時間為常數時間所以認為陣列的訪問操作能在常數時間完成,鍊錶中查詢特定位置的元素則比較困難,需要遍歷。

(5)陣列基於位置的插入刪除操作比較複雜,較多情況下需要大量移動陣列元素的位置,而鍊錶則可以比較簡單的進行插入刪除操作

單向鍊錶:

(一)單向鍊錶型別宣告

public class listnode 

public int getdata()

public void setdata(int data)

public listnode getnext()

public void setnext(listnode next)

}

(二)計算鍊錶元素個數,時間複雜度o(n),空間複雜度o(1)僅用於建立臨時變數

public int listlength(listnode headnode)

return length;

}

(三)單向鍊錶的插入

public listnode insertinlistlist(listnode headnode, listnode nodetoinsert, int position)

//在鍊錶頭部插入

if(position == 1)else

//刪除鍊錶頭部節點

if(position == 1)else{

//刪除鍊錶中間和尾部節點

listnode currentnode = headnode;

int count = 1;

while(count

鍊錶插入刪除操作

include using namespace std 定義單向鍊錶節點 struct listnode end of listnode 將新節點插入煉表頭 void insertlist listnode head,int insertdata listnode pnode new listnod...

鍊錶的建立,插入,刪除,輸出基本操作

include include struct student 定義乙個學生結點,結點包括值域和指標域 typedef struct student list list createlist list insertnode list h,list s list deletenode list h,lo...

雙向鍊錶插入 刪除操作

雙向鍊錶 迴圈單鏈表的出現,雖然能夠實現從任一結點出發沿著鏈能找到其前驅結點,但時間耗費是o n 如果希望從表中快速確定某乙個結點的前驅,另乙個解決方法就是在單鏈表的每個結點裡再增加乙個指向其前驅的指標域prior。這樣形成的鍊錶中就有兩條方向不同的鏈,我們可稱之為雙 向 鍊錶 doublelink...