首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> 關於C

C 語言靜態順序表完整實現:固定容量、增刪改查、去重

     編輯:關於C

結構定義

#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 動態

特性靜態順序表動態順序表
容量編譯期固定運行期增容
內存棧/數據段堆
溢出直接失敗/報錯自動擴展
適用嵌入式、容量可預估通用、不定量數據
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved