線性表:n(n>=0)個相同特性的資料元素的有限序列,資料元素之間具有線性關係。
線性關係:除第乙個元素外,每個元素有且僅有乙個前驅;除最後乙個元素外,每個元素有且僅有乙個後繼。
特點:資料元素之間的關係是它們在資料集合中的相對位置。
靜態順序儲存:
#define maxsize 100;
typedef 資料元素型別 elemtype;
typedef
struct
seqlist;
動態順序儲存
typedef 資料元素型別 elemtype;
typedef
struct
pseqlist;
這種順序儲存結構,無論是靜態分配還是動態分配,儲存空間都是一次性得到的、位址連續的,因此空間的大小是有限制的:maxsize。
所以空間不夠的時候只能申請更大的空間,把原來的陣列中的元素複製過來,然後釋放原陣列。
申請空間的c語言函式:
void
*malloc
(size_t size)
void
*callo
(size_t num,size_t size)
void
*realloc
(void
*ptr,size_t size)
建立空表
靜態的
//靜態的
void
create
(seqlist &l)
動態的
void
create
(pseqlist &l)
}
求長度
int
length
(seqlist l)
查詢
int
search
(seqlist l, elemtype x)
順序儲存的線性表的類定義:
typedef elemtype t;
class
seqlist
intlength()
const
intsearch
(t &x)
const
;//返回元素x在表中的位置
void
delete
(int i, t &x)
;//刪除值為x的元素
intisempty()
intisfull()
t getdata
(int i)
t getprior
(t &x)
;//取x前驅元素
t getnext
(t &x)
;//取x的後繼元素
void
printlist()
;//輸出線性表
};
建構函式
//建構函式,指定sz定義陣列的長度
seqlist::
seqlist
(int sz)
else
}}
查詢函式:
返回的是從左往右第乙個元素值等於x的元素下標
//順序查詢x
int seqlist::
search
(t &x)
const
插入元素
//插入元素到第i個位置
void seqlist::
insert
(int i,
const t &x)
if(i<
0||i>last+1)
for(
int j=last; j>i; j++
) data[i]
= x;
last++
;}
刪除元素
//刪除第i個元素
void seqlist::
delete
(int i)
last--
; cout<<
"成功刪除!"
<}else
cerr<<
"下標越界!"
<}
線性表的順序儲存 線性表的順序儲存結構
1,本文實現乙個線性表 2,順序儲存定義 1,線性表的順序儲存結構,指的是用一段位址連續的儲存單元依次儲存線性表中的資料元素 2,在 c 中可以用乙個陣列作為介質來儲存資料元素 3,設計思路 1,可以用一維陣列實現順序儲存結構 1,儲存空間 t m array 2,當前長度 int m length...
線性表順序儲存
線性表順序儲存結構的建立 插入結點 刪除結點 就地逆置。include stdio.h include malloc.h typedef struct slist,list void init list 線性表初始化 void insert list s,int p 線性表插入 void delet...
線性表順序儲存
時間複雜度效率 o 1 o logn o n o nlogn o n 2 o n 3 o 2 n o n o n n 線性表順序儲存 線性表 順序儲存 include include define maxsize 1024 typedef int elementtype typedef struct...