此部落格是存的是我自己編寫的線性表模板,如有錯誤請指出
線性表的是具有相同特性的資料元素的乙個有限序列。
#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/getelem()函式的使用
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...