C語言動態順序表的實現

2021-09-25 08:21:04 字數 2725 閱讀 8450

靜態順序表只適用於確定知道需要存多少資料的場景。靜態順序表的定長陣列導致n定大了,空間開多了浪費,開少了不夠用。所以現實中基本都是使用動態順序表,根據需要動態的分配空間大小,所以下面我們實現動態順序表。

seqlist.h

#ifndef _seqlist_h_

#define _seqlist_h_

#include#include#includetypedef int sldatatype;

// 順序表的動態儲存

typedef struct seqlist

seqlist;

// 基本增刪查改介面

void seqlistinit(seqlist* psl, size_t capacity);

void seqlistdestory(seqlist* psl);

void checkcapacity(seqlist* psl);

void seqlistpushback(seqlist* psl, sldatatype x);

void seqlistpopback(seqlist* psl);

void seqlistpushfront(seqlist* psl, sldatatype x);

void seqlistpopfront(seqlist* psl);

int seqlistfind(seqlist* psl, sldatatype x);

void seqlistinsert(seqlist* psl, int pos, sldatatype x);

void seqlisterase(seqlist* psl, int pos);

void seqlistremovefirst(seqlist* psl, sldatatype x);

void seqlistmodify(seqlist* psl, int pos, sldatatype x);

void seqlistprint(seqlist* psl);

// 擴充套件面試題實現

void seqlistbubblesort(seqlist* psl);

int seqlistbinaryfind(seqlist* psl, sldatatype x);

// 本題要求:時間複雜度:o(n) 空間複雜度 o(1)

void seqlistremoveall(seqlist* psl, sldatatype x);

#endif /*_seqlist_h_*/

seqlist.c

#include"seqlist.h"

// 基本增刪查改介面

void seqlistinit(seqlist* psl, size_t capacity)

void seqlistdestory(seqlist* psl)//銷毀

}void checkcapacity(seqlist* psl)//檢查滿

}void seqlistpushback(seqlist* psl, sldatatype x)//尾插

void seqlistpopback(seqlist* psl)//尾刪

void seqlistpushfront(seqlist* psl, sldatatype x)//頭插

psl->array[0] = x;

psl->size++;

}void seqlistpopfront(seqlist* psl)//頭刪

psl->size--;

}int seqlistfind(seqlist* psl, sldatatype x)//查詢x

return -1;

}void seqlistinsert(seqlist* psl, int pos, sldatatype x)//插入

psl->array[pos] = x;

psl->size++;

}void seqlisterase(seqlist* psl, int pos)//刪除指定位置的值

psl->size--;

}void seqlistremovefirst(seqlist* psl, sldatatype x)//刪除指定值(第乙個)

// 本題要求:時間複雜度:o(n) 空間複雜度 o(1)

void seqlistremoveall(seqlist* psl, sldatatype x)//刪除指定值(所有)

psl->size -= top;

}void seqlistmodify(seqlist* psl, int pos, sldatatype x)//修改指定值

void seqlistprint(seqlist* psl)

printf("\n");

}// 擴充套件面試題實現

void seqlistbubblesort(seqlist* psl) }}

int seqlistbinaryfind(seqlist* psl, sldatatype x)//二分查詢

else if (psl->array[mid] > x)

else

return mid;

} return - 1;

}

main.c

#include"seqlist.h"

int main()

C語言動態實現順序表

順序表的動態儲存結構 typedef int datatype typedef struct seqlistd seqlistd,pseqlistd 部分函式操作 void initseqlistd pseqlistd pseq 初始化 void checkcapacity pseqlistd ps...

C語言動態順序表的實現

上一次我們實現了靜態順序表,靜態順序表的大小固定,不方便我們去訪問資料。而動態順序表就可以很方便的訪問資料。同樣,我們有以下介面要實現 ifndef seqlist h define seqlist h include include include include define max 3 typ...

C語言實現動態順序表

include include include include ifndef list h define list h define default 3 初始化開闢容量大小 define int sz 2 每次固定增容大小 typedef int datatype typedef struct se...