#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define list_init_size 100
//線性表儲存空間初始分配量
using
namespace std;
const
int inf=
0xfffffff
;typedef
long
long ll;
struct sqlist
;bool
initlist
(sqlist &l)
//線性表初始化
return
false;}
bool
destroylist
(sqlist &l)
//線性表的銷毀
return
false;}
bool
clearlist
(sqlist &l)
//線性表的清空
bool
emptylist
(sqlist l)
//判斷線性表是否為空
intlengthlist
(sqlist l)
//返回線性表大小
bool
getelem
(sqlist &l,
int i,
int&e)
//返回線性表中的第i個元素
bool
findelem
(sqlist &l,
int cur_e,
int&_i)
//找到某個元素所在的位置
return
false;}
bool
locateelem
(sqlist &l,
int e,
int&_i)
//返回第乙個和e滿足某個關係(現在以小於為例)的位序
}return
false;}
bool
priorelem
(sqlist &l,
int cur_e,
int&pre_e)
//尋找e的前驅,後繼方法一樣,這兒不再詳細寫了
bool
listinsert
(sqlist &l,
int i,
int e)
else
return
false;}
int*q=
&l.elem[i-1]
;for
(int
*p=&l.elem[l.length-1]
; p>=q; p--)*
(p+1)=
*p;*q=e;
l.length++
;return
true;}
bool
listinsert
(sqlist &l,
int i,
int&e)
//在順序表中刪除第i個資料,並返回這個值
雙向鍊錶,迴圈鍊錶,雙向迴圈鍊錶都差不多,只是多幾個指標,基本操作方法是相似的,所以這裡只寫了單鏈表的部分操作,這兒只寫了常用的基本操作,同樣沒有進行測試,可能會有一些細節錯誤
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace std;
typedef
long
long ll;
const
int inf=
0xfffffff
;struct node};
node creatlist()
//建立鍊錶,輸入內容,假設到輸入-1為結束標記
r->next=
nullptr
;//這一句很重要
return
*head;
}node insert
(node *head,
int k)
//這裡以有序鍊錶為例(遞增)
void
deletelist
(node *head)
//摧毀鍊錶
p=nullptr;}
bool
isempty
(node *head)
//判斷鍊錶是否為空
intgetlen
(node *head)
//返回鍊錶長度
return len;
}
資料結構(線性表)
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...