資料結構 線性結構之線性表及其實現

2021-09-29 12:11:24 字數 3528 閱讀 6626

線性表:由同型別資料元素構成有序序列的線性結構

表中元素個數稱為線性表的長度

線性表沒有元素時,稱為空表

表起始位置稱表頭,表結束位置稱表尾

型別名稱:線性表(list)

資料物件集:線性表是 n (≥0)個元素構成的有序序列( a1, a2, …,an)

操作集:線性表l -> list,整數i表示位置,元素x -> elementtype.

線性表基本操作主要有:

list makeempty():初始化乙個空線性表l;

elementtype findkth( int k, list l ):根據位序k,返回相應元素 ;

void insert( elementtype x, int i, list l):在位序i前插入乙個新元素x;

void delete( int i, list l ):刪除指定位序i的元素;

int length( list l ):返回線性表l的長度n

利用陣列的連續儲存空間順序存放各個元素

typedef

struct lnode *list;

//list表示線性表

struct lnode

;

訪問元素:l.data[i] 或 ptrl->data[i]

線性表長度:l.last+1 或 ptrl->last+1

1. 初始化(建立空的順序表)

list makeempty()

2. 查詢
int

find

( elementtype x, list ptrl)

3. 插入
在第i個位置上插入元素x

void

insert

( elementtype x,

int i, list ptrl )

if( i <

1|| i > ptrl->last+2)

for( j = ptrl->last; j >= i-

1; j--

) ptrl->data[j+1]

= ptrl->data[j]

;/*將 ai~ an倒序向後移動*/

ptrl->data[i-1]

= x;

/*新元素插入*/

ptrl->last++

;/*last仍指向最後元素*/

return

;}

4. 刪除
void

delete

(int i, list ptrl )

for( j = i; j <= ptrl->last; j++

) ptrl->data[j-1]

= ptrl->data[j]

;/*將 ai+1~ an順序向前移動*/

ptrl->last--

;/*last仍指向最後元素*/

return

;}

typedef

struct lnode *list;

//list即資料型別,與int,double同理

struct lnode

;struct lnode l;

list ptrl;

1. 求表長
int

length

(list ptrl)

return j;

}

2. 查詢

按序號查詢

list findkth

(int k,list ptrl)

if(i == k)

return p;

//找到第k個,返回指標

else

return

null

;//否則返回空

}

按值查詢
list find

(elementtype x,list ptrl)

3. 插入

(1)先構造乙個新結點,用s指向;

(2)再找到鍊錶的第 i-1個結點,用p指向;

(3)然後修改指標,插入結點 ( p之後插入新結點是 s)

list insert

(elementtype x,

int i, list ptrl)

p=findkth

(i-1

,ptrl);if

(p==

null

)else

}

4. 刪除

(1)先找到鍊錶的第 i-1個結點,用p指向;

(2)再用指標s指向要被刪除的結點(p的下乙個結點);

(3)然後修改指標,刪除s所指結點;

(4)最後釋放s所指結點的空間。

list dlete

(int i, list ptrl)

p =findkth

(i-1

,ptrl)

;//找到第i-1個結點

if(p==

null

)else

if(p->next==

null

)else

}

廣義表是線性表的推廣

對於線性表而言, n個元素都是基本的單元素;

廣義表中,這些元素不僅可以是單元素也可以是另乙個廣義表。

typedef

struct gnode *glist;

struct gnode uregion;

glist next;

/* 指向後繼結點 */

};

多重鍊錶:鍊錶中的節點可能同時隸屬於多個鏈

多重鍊錶中結點的指標域會有多個,如前面例子包含了next和

sublist兩個指標域;

但包含兩個指標域的鍊錶並不一定是多重鍊錶,比如在雙向鍊錶

不是多重鍊錶。

多重鍊錶有廣泛的用途:基本上如樹、圖這樣相對複雜的資料結構都可以採用多重鍊錶方式實現儲存。

資料結構 2 1線性表及其實現

線性結構是資料結構裡面最基礎最簡單的一種資料結構型別,最典型的一種叫做線性表。舉個例子 如何用程式語言來表示這樣的乙個一元多項式及其相應的操作運算呢?順序儲存結構直接表示 用乙個陣列儲存第i項的係數ai,而指數對應這個分量的下標 這樣帶來的問題是什麼呢?假如我要表示x的兩千次方,陣列的大小就需要20...

資料結構2 1 線性表及其實現

操作集 線性表 list,元素x elementtype,線性表的基本操作有 線性表的順序儲存實現 typedef struct lnode list struct lnode struct lnode l list ptrl 訪問下標為i的變數 l.data i ptrl data i 返回線性表...

mysql 線性表 資料結構之線性表

概要 參考 大話資料結構 把常用的基本資料結構梳理一下。線性表定義 線性表 list 零個或多個資料元素的有限序列。若將線性表記為 a 1,cdots,a a i,a cdots,a n 則表中 a 領先於 a i a i 領先於 a 稱 a 是 a i 的直接前驅元素,a 是 a i 的直接後繼元...