線性表之順序表

2021-10-08 12:24:47 字數 2665 閱讀 2684

線性表就是零個或多個相同資料的有限序列;線性表按在記憶體中的儲存方法又分為順序儲存和鏈式儲存。本節主要講順序儲存即順序表。

對非空表,a0是表頭,無前驅

an-1是表尾,無後繼

其他的每個元素ai有且僅有乙個直接前驅(ai-1)和乙個直接後繼(ai+1)

1.實現乙個順序表

#define seqlist_max_size   100;      

//表長

typedef

int data_t;

//重新命名資料型別

typedef

struct

seqlist_t;

//結構體重命名為seqlist

2.建立乙個空表

seqlist_t*

create_seqlist

(void

) l -> last =-1

;return l;

}

注:使用malloc要包含標頭檔案#include3.釋放順序表(free)

void

clear_seqlist

(seqlist_t* l)

free

(l);

return

;}

4.判斷表是否為空,若是空表則返回1,否則返回0

int

is_empty_seqlist

(seqlist_t* l)

return

(l->last ==-1);}

5.判斷表是否已滿

int

is_full_seqlist

(seqlist_t* l)

return

( l->last == seqlist_max_size-1)

;//返回1表示線性表滿了,返回0表示沒滿

}

6.置空表

void

set_empty_seqlist

(seqlist_t* l)

l->last =-1

;return

;}

7.獲取表的長度

int

get_length_seqlist

(seqlist_t* l)

return l->last+1;

}

8.遍歷表的成員

void

show_seqlist

(seqlist_t* l)

for(i=

0;i<=l->last;i++

)return

;}

9.表成員的插入運算

int

insert_seqlist

(seqlist_t* l, data_t x,

int pos)

for(i=l->last;i>=pos;i--

) l->data[i+1]

= l->data[i]

; l->data[pos]

= x;

l->last++

;return0;

}

10.表成員的刪除運算

int

delete_seqlist

(seqlist_t* l,

int pos)

for(i=pos;i<

get_length_seqlist

(l);i++

) l->last--

;return0;

}

11.表成員的修改運算

int

change_seqlist

(seqlist_t* l, data_t x,

int pos)

l->data[pos]

= x;

return0;

}

12.表成員的查詢運算

int

search_seqlist

(seqlist_t* l,data_t x)

return-1

;}

#include

#include

#include

"seqlist.h"

intmain

(int argc,

char

const

*ar**)

線性表之順序表

資料結構草草學過,不過沒有認真運用過。雖然知道一些最為基本的抽象型別及一些常用操作,不過叫我把這些基本的演算法寫出來我也 是寫不出來的。因為常說資料結構 演算法是乙個程式設計師最基本的素質,所以這次認真加以複習。在複習的同時我盡量將自己學習的其他的 一些基本知識比如c 中的物件導向思想也引入進來,同...

線性表之順序表

線性表 我們都知道是一種常用的資料結構,也是歷來各種考試的重點。今天抽了一些時間把線性表做了總結。線性表是n個資料元素的乙個有限序列。用公式表示為 l a1,a2,a3,a4,an 因為線性表是乙個有限的序列,所以也如上面公式所示,它的各個元素是相繼排放的。那麼它的每個相連的兩項之間都是有乙個邏輯關...

線性表之順序表

線性表的操作 initlist l 初始化操作,建立乙個空的線性表l。listempty l 判斷線性表是否為空表,空返回true,否則返回false。clearlist l 將線性表清空。getelem l,i,e 將線性表l中的第i個位置元素值返回給e。listdelete l,i,e 刪除線性...