第二章線性表(1)

2021-09-29 03:48:06 字數 2308 閱讀 6051

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線性表的應用 線性表的邏輯特性 只有乙個表頭元素,只有乙個表尾元素,表頭元素沒有前驅,表尾元素沒有後繼元素,其...