const
int maxsize=
100;
template
<
class
t>
class
seqlist
// 析構函式為空
int length (
)// 求線性表的長度
t get (
int i )
;// 按位查詢,取線性表的第 i 個元素
int locate ( t x )
;// 按值查詢,求線性表中值為 x 的元素序號
void insert (
int i, t x )
; t delete (
int i )
;// 刪除線性表的第 i 個元素
void printlist ();
// 遍歷線性表,按序號依次輸出各元素
};
建構函式:無參建構函式(構造乙個空的順序表):
seqlist ( )
有參建構函式:
template
<
class
t>
seqlist
::seqlist
(t a,
int n)
插入操作:線性表的插入運算是指在表的第i (1≤i≤n+1)個位置,插入乙個新元素e,使長度為n的線性表 (e1,…,ei-1,ei,…,en) 變成長度為n+1的線性表(e1,…, ei-1,e,ei,…,en)。
template
<
class
t>
void seqlist
::insert
(int i, t x)
插入演算法複雜:
問題規模:n
最好情況:在最後插入,不需要移動元素,時間複雜性為o(1);
最壞情況:在開頭插入,需要移動n個資料,o(n)
平均時間複雜度:
元素總個數為n,各個位置插入的概率相等為p=1/(n+1 )
平均移動元素次數為
刪除操作:
線性表的刪除運算是指將表的第i(1≤i≤n)個元素刪去,使長度為n的線性表(e1,…, ei-1,ei,ei+1,…,en)變成長度為n-1的線性表(e1,…, ei-1, ei+1,…,en)。
template
<
class
t>
t seqlist
::delete
(int i)
刪除演算法的複雜性分析
問題規模:n
最好情況:在最後刪除,不需要移動元素,時間複雜性為o(1);
最壞情況:在開頭刪除,需要移動n-1個資料,o(n)
平均複雜性:
元素總個數為n,各個位置刪除的概率為p=1/n
平均移動元素次數為
查詢操作:
兩種查詢方法
按位置查詢,即查詢指定位置上的元素
按值查詢,即查詢指定的值在順序表中的位置
按位查詢:
template
<
class
t>
t seqlist
::get
(int i)
按位查詢演算法的時間複雜度為 o ( 1 ) 。
按值查詢:
template
<
class
t>
int seqlist
::locate
(t x)
如果順序表的第乙個元素恰好就是 x ,演算法只要比較一次就行了,這是最好情況;
如果順序表的最後乙個元素是 x ,演算法就要比較 n 個元素,這是最壞情況;
平均情況下,假設資料是等概率分布,則平均要比較 n /2 個元素。所以,按值查詢演算法的平均時間效能是 o ( n ) 。
順序表特點:
第二章 線性表
定義 線性表簡稱表,是n n 0 個具有相同型別的資料元素的有限序列,線性表中資料元素的個數稱為線性表的長度。長度等於0時稱空表,乙個非空表通常記作 l a1,a2,an 線性表的性質 1.有限性 元素個數有限 2.相同性 元素型別相同 3.順序性 除首位元素外,相鄰元素都有前驅和後繼 2.1.2線...
第二章線性表
2 1線性表的邏輯結構 1 線性表是n 0個具有相同型別的資料元素的有限序列。空表是長度等於零的線性表。2 特性 有限性 相同性 順序型。2 2線性表的順序儲存結構及實現 1 c 中陣列的下標是從0開始的,而線性表中元素的序號是從1開始的。線性表中第i個元素儲存在陣列中下標為i 1的位置。2 順序表...
第二章 線性表
寫在前邊的話寫 好比寫詩,資料結構就好比唐詩三百首,熟讀並默寫這是基本功能,所以要閒的沒事可以在紙上多寫 線性表的定義和基本操作 線性表的實現 2.1順序儲存結構 2.2鏈式儲存結構 2.3線性表的應用 線性表的邏輯特性 只有乙個表頭元素,只有乙個表尾元素,表頭元素沒有前驅,表尾元素沒有後繼元素,其...