資料結構模板 線性表

2021-09-24 20:28:43 字數 3834 閱讀 2045

此部落格是存的是我自己編寫的線性表模板,如有錯誤請指出
線性表的是具有相同特性的資料元素的乙個有限序列。
#include

#include

#define elemtype int

#define maxsize 100

using namespace std;

typedef

struct

sqlist;

void

initlist

(sqlist &l)

l.length=0;

}void

displaylist

(sqlist l)

cout<}void

listinsert

(sqlist &l,elemtype e,

int i)

//判斷位置是否合法

for(

int j=l.length-

1;j>=i-

1;j--

)//元素後移

l.data[i-1]

=e;//插入資料

l.length++

;//長度加一

}void

listdelete

(sqlist &l,

int i)

//判斷位置是否合法

for(

int j=i-

1;j)//元素前移

l.length--

;//長度減一

}void

listempty

(sqlist l)

void

getelem

(sqlist l,

int i,elemtype &e)

intlocateelem

(sqlist l,elemtype e)

return0;

}int

listlength

(sqlist l)

void

destroylist

(sqlist l)

intmain()

displaylist

(sl)

;//資料顯示

cout<<

"請輸入你要插入的資料:"

; cin>>e;

cout<<

"請輸入你要插入的位置:"

; cin>>i;

listinsert

(sl,e,i)

;displaylist

(sl)

; cout<<

"請輸入你要查詢資料的位置:"

; cin>>i;

getelem

(sl,i,e)

; cout

cout<<

"請輸入你要查詢的資料(存在則輸出對應序號,不存在輸出0):"

; cin>>i;

cout<<

locateelem

(sl,i)

//destroylist(sl);

cout<<

"請輸入你要刪除資料的位置:"

; cin>>i;

listdelete

(sl,i)

;displaylist

(sl)

;//刪除資料並顯示

return0;

}

#include

#include

#define elemtype int

using namespace std;

///單鏈表linknode!!!

typedef

struct lnode

linknode;

void

creatlistf

(linknode *

&l,elemtype a,

int n)

}void

creatlistr

(linknode *

&l,elemtype a,

int n)

r->next=

null

;//尾結點的next為空

}void

initlist

(linknode *

&l)void

destroylist

(linknode *

&l)free

(pre);}

bool listempty

(linknode *l)

intlistlength

(linknode *l)

return n;

}void

displist

(linknode *l)

cout<}bool getelem

(linknode *l,

int i,elemtype &e)

if(p==

null

)//不存在第i個結點

return false;

else

}int

locateelem

(linknode *l,elemtype e)

if(p==

null

)//不存在data為e的結點

return0;

else

return i;

}bool listinsert

(linknode *

&l,int i,elemtype e)

if(p==

null

)//第i-1個結點為空,i個更是空了,無法插入資料

return false;

else

}bool listdelete

(linknode *

&l,int i,elemtype &e)

if(p==

null

)return false;

//不存在第i-1個結點

else

}int

main()

;//creatlistf(s,a,4);//頭插法方式建立鍊錶

//displist(s);

creatlistr

(s,a,4)

;//尾插法建立鍊錶

displist

(s);

///以下是檢驗getelem()

/*cout<<"請問你要查詢鍊錶中第幾個值?:";

cin>>i;

getelem(s,i,e);

cout<<"第"/*int l;

l=listlength(s);

cout<<"鍊錶的長度為:"/*cout<<"請輸入您要插入的資料:";

cin>>e;

cout<<"請輸入您要插入的位置:";

cin>>i;

listinsert(s,i,e);

displist(s);*/

///以下是檢驗locateelem()

/*cout<<"請輸入您要查詢的值:";

cin>>e;

int l=locateelem(s,e);

if(!l)

cout<<"不存在該值!"/*cout<<"請輸入您所要刪除的位置:";

cin>>i;

listdelete(s,i,e);*/

destroylist

(s);

displist

(s);

return0;

}

資料結構(線性表)

1.試寫一演算法,在無頭結點的動態單鏈表上實現線性表操作insert l,i,b 並和在帶頭結點的動態單鏈表上實現相同操作的演算法進行比較。status insert linklist l,int i,int b 在無頭結點鍊錶l的第 i個元素之前插入元素 belse insert 2.已知線性表中...

資料結構 線性表

參考 一 線性表 順序表 單鏈表 迴圈鍊錶 雙鏈表 順序表 1.表的初始化 void initlist seqlist l 2.求表長 int listlength seqlist l 3.取表中第i個結點 datatype getnode l,i 4.查詢值為x的結點 5.插入 具體演算法描述 v...

資料結構 線性表

線性表是最基礎的一種資料結構,這樣的資料物件包含的資料元素具有一對一的前驅後繼關係。按其邏輯儲存方式的不同可分為兩類線性表 順序表和鏈式表。其中鏈式表又可分為線性鍊錶 迴圈鍊錶和雙向鍊錶。下面分別介紹下這幾種線性表的資料結構 1.順序表 typedef struct sqlist 插入演算法 i到n...