C語言 資料結構 線性表 順序表的完整實現

2021-10-03 08:25:43 字數 1653 閱讀 6481

線性表依據儲存方式分為順序表和煉表(鍊錶包括單鏈表、雙鏈表、迴圈鍊錶),依據操作限制分為棧、佇列。

順序表,即是資料在記憶體中佔據連續的記憶體單元,方便訪問成員,但是刪除和插入操作不便。

#define list_init_size 5

#define list_increment 5

typedef

int seqtype;

//儲存單元型別

typedef

struct

sqlist;

/**

* 初始化順序表,分配list_init_size*int大小的記憶體空間

* 初始化實際長度和當前分配長度

*/int

initlist_sq

(sqlist *l)

/**

* 插入順序表

* 下標是負數就插入到結尾,下標大於實際長度則預設追加到末尾,長度不夠則新增記憶體

* 第乙個形參為結構體指標,第二個為插入元素位置,第三個為插入的值

*/int

insertlist_sq

(sqlist *l,

int index,seqtype val)

l->elem = newbase;

l->listsize +

= list_increment;}if

(index <0)

//下標是負數,插入到結尾

index = l->length;

if(index > l->length)

//尋找合適的插入位置,index後面的元素向後移動

int i = l->length;

for(i;i>index;i--

) l->elem[index]

= val;

//插入元素

l->length++

;return1;

}

/**

* 輸入引數為要刪除的元素值,只刪除第乙個出現的值

*/int

removelist_sq

(sqlist *l, seqtype val)}if

(index <0)

for(

; tmp < l->length -

1; tmp++

) l->length--

;return index+1;

}

/**

* 輸入引數為要查詢的元素值,只返回第乙個出現的值在順序表中的下標值

* 若返回值為-1則表示未找到

*/int

findlist_sq

(sqlist *l, seqtype val)

}return-1

;}

/**

* 銷毀順序表

*/void

destorylist_sq

(sqlist *l)

//列印順序表 

void

display_sq

(sqlist *l)

資料結構(C語言)線性表(順序表)

首先線性表的基本函式 1.initlist l 建立乙個空的線性表l 2.destorylist l 如果線性表已經存在的話,則銷毀線性表l 3.listlength l 返回線性表的元素個數 4.getlist l,i e 用e返回線性表第i個元素的值 5.locateelem l,e compa...

資料結構 C語言線性表 順序表

線性表是最常用且最簡單的一種資料結構。簡言之,乙個線性表是n個資料元素的有限序列。在資料元素的非空有限集合中 存在唯一的乙個被稱做 第乙個 的資料元素 存在唯一的乙個被稱做 最後乙個 的資料元素 除第乙個之外,集合中的每個資料元素均只有乙個前驅 除最後乙個之外,集合中每個資料元素均只有乙個後繼 in...

C語言資料結構線性表 順序表2

include define ok 1 define error 0 define maxsize 100 定義資料元素型別 typedef structelemtype 定義順序線性表 typedef structsqlist 初始化線性表 void inistlist sqlist pl 建立線...