線性表的順序儲存結構以及實現

2021-10-20 22:18:50 字數 4603 閱讀 7019

順序表,全名順序儲存結構,是線性表的一種。

例如,使用順序表儲存集合 ,資料最終的儲存狀態如圖 所示:

建立順序表除了需要足夠的容量大小,同時還需要另外兩個變數

1.記錄當前順序表元素的個數

2.記錄當前順序表申請的儲存容量

注:一般情況下:儲存容量大於順序表的個數

typedef

struct sqlist sqlist;

注意,sqlist_head 是我們宣告的乙個未初始化的動態陣列,不要只把它看做是普通的指標。

接下來就是對其的一些操作

初始化

//順序表初始化

sqlist init_table()

list.length =0;

//初始化元素個數為0

list.size = size;

//初始化儲存空間為size

return list;

}

輸出表中的元素

//展示表

void

show_table

(sqlist list)

for(i =

0; i < list.length; i++

)//便利動態陣列

printf

("\n");

}

插入元素

//在指定位置add插入元素elem

sqlist add_table

(sqlist list,

int add,

int elem)

//判斷空間是否足夠,增加分配

if(list.length == list.size)

list.sqlist_head = newbase;

list.size +=5

;}//表元素後移

for(i = list.length -

1; i >= add-

1; i--

)//在插入位置處賦值

list.sqlist_head[i]

= elem;

//表長度加一

list.length ++

;return list;

}

刪除

//刪除

sqlist delete_table

(sqlist list,

int del)

for(i = del -

1; i < list.length; i++

)//指定插入位置後面的值全部後移

list.length--

;return list;

}

更改

//更改

sqlist update_table

(sqlist list,

int elem,

int new_elem)

else

//沒有找到匹配值

}return list;

}

查詢

//通過元素值查詢

intfind_pos_table

(sqlist list,

int elem)

}return-1

;}

清空表

//清空表

void

clear_table

(sqlist *list)

銷毀表

//銷毀表

sqlist destory_table

(sqlist *list)

求表長

//求表長

intget_length_table

(sqlist list)

整體**如下

#include

"linear_list.h"

#include

#include

# define size 10

//順序表初始化

sqlist init_table()

list.length =0;

list.size = size;

return list;

}//展示表

void

show_table

(sqlist list)

for(i =

0; i < list.length; i++

)//便利動態陣列

}//插入

sqlist add_table

(sqlist list,

int add,

int elem)

//判斷空間是否足夠,增加分配

if(list.length == list.size)

list.sqlist_head = newbase;

list.size +=5

;}//表元素後移

for(i = list.length -

1; i >= add-

1; i--

)//在插入位置處賦值

list.sqlist_head[i]

= elem;

//表長度加一

list.length ++

;return list;

}//刪除

sqlist delete_table

(sqlist list,

int del)

for(i = del -

1; i < list.length; i++

)//指定插入位置後面的值全部後移

list.length--

;return list;

}//t通過元素值查詢

intfind_pos_table

(sqlist list,

int elem)

}return-1

;}//更改

sqlist update_table

(sqlist list,

int elem,

int new_elem)

else

//沒有找到匹配值

}return list;

}//清空表

void

clear_table

(sqlist *list)

//求表長

intget_length_table

(sqlist list)

//判斷表是否為空

intisnull_table

(sqlist list)

//銷毀表

sqlist destory_table

(sqlist *list)

intmain()

#ifndef linear_list_h

#define linear_list_h

typedef

struct sqlist sqlist;

//順序表初始化

sqlist init_table()

;//插入

sqlist add_table

(sqlist list,

int add,

int elem)

;//刪除

sqlist delete_table

(sqlist list,

int del)

;//t通過元素值查詢

intfind_pos_table

(sqlist list,

int elem)

;void

show_table

(sqlist list)

;//更改

sqlist update_table

(sqlist list,

int elem,

int new_elem)

;//清空

void

clear_table

(sqlist *list)

;//求表長

intget_length_table

(sqlist list)

;//判斷表是否為空

intisnull_table

(sqlist list)

;//銷毀表

sqlist destory_table

(sqlist *list)

;#endif

// !linear_list_h

線性表的順序儲存 線性表的順序儲存結構

1,本文實現乙個線性表 2,順序儲存定義 1,線性表的順序儲存結構,指的是用一段位址連續的儲存單元依次儲存線性表中的資料元素 2,在 c 中可以用乙個陣列作為介質來儲存資料元素 3,設計思路 1,可以用一維陣列實現順序儲存結構 1,儲存空間 t m array 2,當前長度 int m length...

一 線性表以及線性表的順序儲存結構

1 線性表的定義 2 線性表的性質 3 順序儲存結構 線性表的順序儲存結構,指的是用一段位址連續的儲存單元依次儲存線性表的資料元素。4 插入元素 演算法描述 5 刪除元素 演算法描述 6 可復用順序線性表 例項 相關操作的定義 ifndef seqlist h define seqlist h in...

線性表 線性表的順序儲存結構

線性表的順序儲存結構 線性結構是乙個資料元素的有序 次序 集。集合中必存在唯一的乙個 第一元素 集合中必存在唯一的乙個 最後元素 除最後元素外,均有唯一的後繼 除第一元素外,均有唯一的前驅。adt list 資料關係 r1 adt list 容易混的概念 引用符號 和引用型操作沒有關係 加工型操作 ...