//鍊錶的實現
/* 實現單鏈表的 構建、資料新增、資料刪除(返回元素所在位置)、資料查詢(返回元素所在的位置)的演算法設計;
*///鍊錶的實現
/* 實現單鏈表的 構建、資料新增、資料刪除(返回元素所在位置)、資料查詢(返回元素所在的位置)的演算法設計;
*/#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 頭結點,作用就是表示單鏈表的頭 後面我們每新增乙個結點,就直接加入到鍊錶的最後 遍歷 通過乙個輔助變數,幫助來遍歷整個鍊錶 第...