線性表:n個具有相同型別的資料元素的有限序列
長度:線性表中資料元素的個
空表:長度等於零的線性表
相鄰資料元素的序偶關係,a1無前驅,an無後繼
順序表sequential list
用一段位址連續的儲存單元,依次儲存線性表中的資料元素
線性表中元素序號是從1開始的,線性表中第i個元素儲存在陣列中下標為i-1的位置
陣列需要分配固定長度的陣列空間,陣列的長度要大於當前線性表的長度(線性表中可以進行插入操作),陣列長度maxsize>線性表長度length
順序表的實現
const
int maxsize=
100;
class
seqlist
seqlist ::
seqlist()
//表的初始化,建乙個空表
seqlist ::
seqlist
(datatype a,
int n)
//建立順序表
int seqlist ::
empty()
//判空,只需判斷length是否為0
int seqlist ::
length()
//長度
void seqlist ::
printlist()
//遍歷操作
datatype seqlist ::
get(
int i)
//按位查詢
void linklist ::
insert
(int i, datatype x)
//插入操作
if(p==
null
)throw
"插入位置錯誤"
;//沒有找到第i-1個結點
else
}
鏈式儲存結構類似於叫號,不用排隊,但不僅要存放自己的資料還要存放乙個指標
單鏈表singly linked list
動態儲存分配—>執行時分配空間
邏輯次序和物理次序不一定相同;元素之間的邏輯關係用指標表示
data:儲存資料元素
next:儲存指向後繼節點的位址
頭指標first:指向第乙個結點的儲存位址
尾標誌:終端結點的指標域為空
空表:first=null
頭結點:在第乙個元素結點之間附設乙個型別相同的結點node(簡化了對邊界的處理——插入、刪除、構造等)
//結點結構定義
//初始化單鏈表
int linklist ::
empty()
//空單鏈表滿足條件
void linklist ::
printlist()
//遍歷操作
cout<
}int linklist ::
length()
//求長度
return count;
//注意count的初始化和返回值之間的關係
}datatype linklist ::
get(
int i)
//按位查詢
if(p ==
null
)throw
"查詢位置錯誤"
;else
return p-
>data;
}int linklist ::
locate
(datatype x)
//按值查詢
return0;
//退出迴圈表明查詢失敗
}void linklist ::
insert
(int i, datatype x)
//插入操作
if(p ==
null
)throw
"插入位置錯誤"
;//沒有找到第i-1個結點
else
}datatype linklist ::
delete
(int i)
//刪除操作
if(p ==
null
|| p-
>next ==
null
)throw
"刪除位置錯誤"
;else
}void linklist ::
linklisthead
(datatype a,
int n)
//頭插法
}linklist ::
linklistrear
(datatype a,
int n)
//尾插法
r->next =
null
;//單鏈表建立完畢,將終端結點的指標域置空
} linklist ::
~linklist()
//析構函式,銷毀單鏈表
}
單鏈表的使用
#include
using
namespace std;
#define datatype int
struct node
;class
linklist
;//。。。。。
intmain()
,i,x;
linklist l;
l.linklisthead
(r,5);
l.linklistrear
(r,5);
//只執行尾插法
cout<<
"當前線性表為"
; l.
printlist()
; cout<<
"線性表長度:"
<
length()
<
trycatch
(char
*str)
cout<<
"當前線性表的長度"
<
length()
<
cout<<
"輸入查詢元素值"
; cin>>x;
i = l.
locate
(x);
if(i>0)
cout<<
"元素"
<
"的位置為:"
<
else
cout<<
"單鏈表中沒有元素"
<
trycatch
(char
*str)
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...