靜態順序表只適用於確定知道需要存多少資料的場景。靜態順序表的定長陣列導致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...