資料結構與演算法之單鏈表

2021-09-28 13:31:16 字數 2945 閱讀 9254

//鍊錶的實現

/* 實現單鏈表的 構建、資料新增、資料刪除(返回元素所在位置)、資料查詢(返回元素所在的位置)的演算法設計;

*///鍊錶的實現

/* 實現單鏈表的 構建、資料新增、資料刪除(返回元素所在位置)、資料查詢(返回元素所在的位置)的演算法設計;

*/#include

#include

using

namespace std;

typedef

struct _linklist linklist, linknode;

//初始化鍊錶

bool

initlink

(linklist*

&l)//新增鍊錶元素之前插法

bool

addlinkfront

(linklist*

& l, linknode *node)

//新增鍊錶元素之尾插法

bool

addlinklasr

(linklist*

&l, linknode * node)

//再頂頂位置插入元素

bool

insert

(linklist*

& l,

int i,

int x)

else

}return

false;}

//銷毀鍊錶

void

destroy

(linklist *

&l)}

//輸出鍊錶元素

void

printlist

(linklist*

&l) cout << endl;

}//查詢鍊錶元素

bool

findlist

(linklist*

&l,int element,

int&index)

return

false;}

//刪除鍊錶元素

bool

deletelist

(linklist*

&l,int

&element,

int&index)

else

}return

false;}

intmain

(void

)else

//由使用者選擇是用前插法還是尾插法

cout <<

"請選擇使用前插法插入資料還是使用尾插法插入資料!"

<< endl;

cout <<

"若要使用前插法插入資料請輸入: 1"

<< endl;

cout <<

"若要使用尾插法插入資料請輸入: 2"

<< endl;

cin >> chose;

cout <<

"請輸入要插入的元素個數: "

<< endl;

int num =0;

//使用者要插入的元素個數

cin >> num;

//由使用者選擇何種方插入元素

switch

(chose)

else

num--;}

break

;case2:

while

(num >0)

else

num--;}

break

;default

: cout <<

"輸入不合法!!!!, 請重新輸入"

<< endl;

while(1

)break;}

//輸出使用者選擇的 前/尾 插入的元素

printlist

(l);

int i;

//插入的位置

int x;

//插入的元素值

cout <<

"請輸入你想要插入的元素值: "

; cin >> x;

cout <<

"請輸入你想要插入元素的位置從0開始: "

; cin >> i;

//使用者插入資料if(

insert

(l, i, x)

)else

cout <<

"插入資料後的鍊錶是: "

;printlist

(l);

//資料查詢功能

int element;

int index =0;

// 被查詢或被刪除的元素所在的位置

cout <<

"請輸入你要查詢的元素: "

; cin >> element;if(

findlist

(l, element, index)

)else

printlist

(l);

cout <<

"請輸入你要刪除的元素: "

; cin >> element;

//資料刪除

index =0;

// 將索引置為0if(

deletelist

(l, element, index)

)else

printlist

(l);

destroy

(l);

cout <<

"現在的鍊錶元素是: "

<< endl;

printlist

(l);

system

("pause");

return0;

}

前插法:

尾插法:

資料結構與演算法之單鏈表

include include define maxsize 100 typedef int elemtype typedef struct lnode linknode void createlistf linknode l,elemtype a,int n 頭插法建立單鏈表 void initl...

單鏈表(演算法與資料結構)

鍊錶 單鏈表 為每個結點新增1個指標域,每個結點包括兩個域 資料域 存放元素本身資訊 指標域 存放後繼結點的儲存位置 指向鍊錶中第乙個結點的指標,稱為這個鍊錶的頭指標。最後乙個元素的指標不指向任何結點,稱為空指標,圖示中用 表示,在演算法中用 null 表示 帶頭結點的單鏈表 頭結點 可以不存資訊,...

資料結構與演算法 單鏈表

鍊錶是有序的列表,但是它在記憶體中是儲存如下 鍊錶是以節點的方式來儲存的 鍊錶的各個節點不一定是連續儲存的 鍊錶分帶頭結點的鍊錶和不帶頭結點的鍊錶 新增先建立乙個 head 頭結點,作用就是表示單鏈表的頭 後面我們每新增乙個結點,就直接加入到鍊錶的最後 遍歷 通過乙個輔助變數,幫助來遍歷整個鍊錶 第...