順序表對資料的物理儲存結構:要提前申請一整塊足夠大小的物理空間,使用一組位址連續的儲存單元依次儲存表中的資料元素。
順序表,順序表儲存資料同陣列非常接近。其實,順序表儲存資料使用的就是陣列(固定或者動態陣列)。這裡用的是動態儲存結構來實現,即動態陣列。
主要內容包括:順序表的定義及順序表的初始化,順序表的一些基本操作(增刪查改等),順序表的優缺點。
#include
#include
//順序表的定義
//typedef了解下
typedef
struct tabletable;
//table<=> struct table,table是乙個別名
#define size 5
// 對size進行巨集定義,表示順序表申請空間的大小。
//順序表的初始化
table init_table()
t.length =0;
//表的長度初始化為0
t.size = size;
//空表的初始化儲存空間為size
return t;
}void
displaytable
(table t1)
}
順序表的基本操作
table add_elem
(table t,
int pos,
int elem)
//做插入操作時,首先需要看順序表是否有多餘的儲存空間提給給插入的元素,如果沒有,需要申請
if(t.length == t.size)
t.size+=1
;}for(
int i=t.length-
1; i>=pos; i--
) t.head[pos]
= elem;
//由於新增了元素,所以長度+1
t.length++
;return t;
}int
search_elem
(table t,
int elem)
}return-1
;}table change_elem
(table t,
int od_elem,
int new_elem)
intmain()
printf
("順序表中儲存的元素分別是:\n");
displaytable
(t);
printf
("在順序表中第3個位置處插入元素25:\n");
t1=add_elem
(t,2,25
);displaytable
(t1)
;printf
("在順序表中查詢元素25:\n");
int pos =
search_elem
(t1,25)
;printf
("%d\n"
,pos)
;printf
("在順序表中修改元素25為52:\n");
t2 =
change_elem
(t1,25,
52);displaytable
(t2)
;}
順序表的優缺點:
優點:訪問速度高效,通過下標來直接儲存 ,o(1)。
缺點:插入和刪除較慢,且不可以動態增加長度(要重新分配),o(n)。例如,假設元素的個數為n,插入第i個元素時,需要移動n-i-1個元素,平均移動次數為n/2;刪除第i個元素時,需要移動n-i個元素,平均移動次數為(n-1)/2 。
場景:順序表適用於頻繁的查詢卻很少的插入和刪除操作。
資料結構之順序表
首先是標頭檔案seqlist.h ifndef seqlist h define seqlist h include includeusing namespace std define elemtype int define seqlist default size 10 typedef struc...
資料結構之順序表
順序表的思想容易了解,但是 不容易掌握,我這裡根據老師所提供的 進行一下簡單的總結 這個 包含順序表的查詢,插入,刪除,建表,輸出資料 includeusing namespace std define ok 1 define error 0 define overflow 2 typedef in...
資料結構之順序表
順序表就是按照順序儲存方式儲存的線性表,該線性表的結點按照邏輯次序一次存放在計算機的一組連續的儲存單元中如下圖 由於順序表是一次存放的,只要知道了該順序表的首位址以及每個資料元素所占用的儲存長度,那麼我們就很容易計算出任何乙個資料元素 也就是資料繫結點 的位置。1 結點資料型別 public cla...