動態順序表實現

2021-09-10 09:54:23 字數 1056 閱讀 7640

動態順序表相比於靜態順序表加入了擴容機制,在進行所有插入操作是都必須判斷是否需要擴容

結構體

typedef int datatype;

#define init_capacity (3)

typedef struct seqlistd seqlistd;

順序表的初始化和銷毀:

//初始化

void seqlistdinit(seqlistd *pseq)

//銷毀

void seqlistddestroy(seqlistd *pseq)

動態順序表是否擴容

//判斷是否需要擴容

static void expandifrequired(seqlistd *pseq)

// 擴容

pseq->capacity *= 2;

// 1. 申請新空間

datatype *newarray = (datatype *)malloc(sizeof(datatype)* pseq->capacity);

assert(newarray);

// 2. 資料搬移

for (int i = 0; i < pseq->size; i++)

// 3. 釋放老空間,關聯新空間

free(pseq->parray);

pseq->parray = newarray;

}

順序表的插入操作:(同理,所有的插入都需要擴容判斷)

//尾插

void seqlistdpushback(seqlistd *pseq, datatype data)

測試函式:

void test()

動態實現順序表

順序表是在計算機記憶體中以 陣列的形式儲存的線性表,是指用一組位址連續的 儲存單元 依次儲存 資料元素 的線性結構。線性表採用順序儲存的方式儲存就稱之為順序表。順序表是將表中的結點依次存放在計算機記憶體中一組位址連續的 儲存單元中。下面來進行順序表的動態實現 標頭檔案 ifndef seqlist ...

實現動態順序表

標頭檔案seqlist.h中 pragma once include include typedef int datatype typedef struct seqlist seqlist 列印順序表 void printseqlist seqlist pseq printf n 增大容量 void...

實現動態順序表

靜態順序表和動態順序表之間的區別就是靜態順序表的儲存大小一旦設定好之後便不能修改 顯然動態順序表採用的是動態分配記憶體,容量是可以增加的,當然動態順序表要比靜態順序表多增加乙個監測容量的引數,每當當前容量存滿的時候就要觸發擴容機制,實現動態開闢記憶體。由於兩者差別不是很大,這裡我就只實現動態順序表,...