結構定義
#define MAX_SIZE 5
typedef int DataType;
typedef struct {
DataType data[MAX_SIZE];
size_t size;
} SeqList;
核心操作集
Init:memset 清零,size=0;
PushBack/Front:滿檢查,移動元素,size++;
PopBack/Front:空檢查,size-- 或前移;
Insert(pos, val):位置合法性、滿檢查、後移插入;
Find(val):線性查找,返回下標或 -1;
Erase(pos):位置合法、前移覆蓋、size--;
Remove(val):刪除首個匹配;
RemoveAll(val):刪除所有匹配(注意索引回退);
Modify(pos, val):直接賦值。
關鍵實現片段
void RemoveAll(SeqList *s, DataType x) {
for (size_t i = 0; i < s->size; ) {
if (s->data[i] == x) {
for (size_t j = i; j + 1 < s->size; ++j)
s->data[j] = s->data[j+1];
s->size--;
} else ++i;
}
}
靜態 vs 動態
| 特性 | 靜態順序表 | 動態順序表 |
| 容量 | 編譯期固定 | 運行期增容 |
| 內存 | 棧/數據段 | 堆 |
| 溢出 | 直接失敗/報錯 | 自動擴展 |
| 適用 | 嵌入式、容量可預估 | 通用、不定量數據 |