什麼是線性表?
線性表簡稱表,是n(n>=0)個具有相同型別的資料元素的有限序列,線性表中資料元素的個數稱為線性表的長度,長度為0的表稱為空表。
什麼是順序表?
線性表的順序儲存結構稱為順序表。
順序表是用一段位址連續的儲存單元依次儲存線性表的資料元素,因為線性表中每個元素的型別相同,通常用一維陣列來實現線性表,也就是把線性表中相鄰的元素存在陣列中相鄰的位置(即用物理位置來表現元素間的關係)。
順序表的必要屬性:順序表的儲存要點:
1.分配一段位址連續的儲存空間
2.依次儲存線性表中的資料元素
3.表示邏輯關係不分配儲存空間(最本質)(元素之間的位置關係即表示其邏輯關係)
由於線性表的資料元素型別不確定,所有採用c++的模板機制。
對c++模板機制不太了解的可以看看我之前的-----》c++模板的概念 定義和使用
seqlist.h:(順序錶類的宣告)
const int maxsize=100; //100只是示例性的資料,可以根據實際問題具體定義
template //定義模板類seqlist
class seqlist
;
基本操作的演算法:
1.建構函式
(1)無參建構函式 seqlist( ):
建立乙個空的順序表,只需簡單的將順序表的長度length初始化為0。
template seqlsit::seqlist()
(2)有參建構函式 seqlist(t a, int n) :
建立乙個長度為n的順序表,需要將給定的陣列元素作為線性表的資料元素傳入順序表中,並將傳入的元素個數作為順序表的長度。
template seqlist::seqlist(t a,int n)
3.查詢操作:
(1)按位查詢
t get(int i)取線性表的第i個元素:
順序表中第i個元素儲存在陣列中下標為i-1的位置,所以,容易實現按位查詢。該按位查詢演算法的時間複雜度為o(1)。
template t seqlist::get(int i)
(2)按值查詢
int locate(t x) 求線性表中值為x的元素序號:
在順序表中實現按值查詢操作,需要對順序表中的元素依次進行比較。如果查詢成功,返回元素的序號(注意不是下標);如果查詢不成功,返回查詢失敗的標準『0』。
template int seqlist::locate(t x)
在第i(1<= i <= i+1)個位置上插入乙個元素後移語句的執行次數為n-i+1,假設在表中任何位置上插入元素的機會是均等的,則平均後移語句的執行次數為n/2,演算法的時間複雜度為o(n)。
5.順序表刪除演算法
t delete(int i) 刪除線性表的第i個元素:
刪除操作是將表的第i個元素刪除,使長度為n的線性表變成長度為n-1的線性表,取出被刪除元素後,必須從第i+1(下標為i)個元素開始移動,直至將最後乙個元素前移為止。
偽**:
1.如果表空,則丟擲空表警告;
2.如果刪除位置不合理,則丟擲刪除位置異常;
3.取出被刪除元素;
4.將下標為i,i+1,...,n-1處的元素分別移到下標i-1,i,...,n-2處;
5.表長減1,返回被刪元素值;
c++描述如下:
templatet seqlist::delete(int i)
{ if(length==0)
throw"表為空!";
if(i<1||i>length)
throw"位置異常";
x=data[i-1]; //取出位置i的元素
for(j=i;j在順序表上實現刪除操作,等概率情況下,平均要移動表中一半的元素,演算法的平均時間複雜度為o(n)。
6.遍歷操作:
void printlist() 按下標依次輸出各元素:
templatevoid seqlist::printlist()
{ for(int i=0;i最後:
順序表的優點:
1.無需為表示表中的元素之間的邏輯關係而增加額外的儲存空間。
2.隨機訪問:可以快速的訪問表中任一位置的元素。
順序表的缺點:
1.插入和刪除操作需要移動大量元素。
2.表的容量難以確定,表的容量難以擴充。
3.造成儲存空間的碎片
參考至-----《資料結構(c++版)(第二版)》/王紅梅,胡明,王濤編著.
線性表的順序儲存 線性表的順序儲存結構
1,本文實現乙個線性表 2,順序儲存定義 1,線性表的順序儲存結構,指的是用一段位址連續的儲存單元依次儲存線性表中的資料元素 2,在 c 中可以用乙個陣列作為介質來儲存資料元素 3,設計思路 1,可以用一維陣列實現順序儲存結構 1,儲存空間 t m array 2,當前長度 int m length...
線性表的順序儲存結構 順序表
線性表的順序儲存結構 順序表一.在c c 語言中,借助陣列型別來實現順序表,也就是說,用陣列存放線性表的元素及其邏輯關係,陣列的基本型別就是線性表中元素的的型別,陣列大小 即陣列上界 下界 1 要大於等於線性表的長度,否則該陣列不能存放對應線性表的所有元素。所以當線性表長度小於陣列大小時,該陣列中會...
順序表(線性表的順序儲存結構)
邏輯結構上呈線性分布的資料元素在實際的物理儲存結構中也同樣相互之間緊挨著,這種儲存結構稱為線性表的順序儲存結構。也就是說,邏輯上具有線性關係的資料按照前後的次序全部儲存在一整塊連續的記憶體空間中,之間不存在空隙,這樣的儲存結構稱為順序儲存結構。使用順序儲存結構儲存的資料,第乙個元素所在的位址就是這塊...