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

C 語言陣列實現線性表:部分功能原型實現

     編輯:關於C語言

本文展示線性表陣列實現的早期原型版本,僅包含初始化、追加、插入、遍歷、判空等核心骨架,刪除、排序、倒置等功能待補全。代碼結構與完整版一致,適合對比學習功能迭代過程。

程式碼結構概覽

struct Arr {
    int *pBase;  // 動態陣列首址
    int len;     // 容量
    int cnt;     // 當前元素數
};

// 函數聲明(部分未實現)
void init_arr(struct Arr *pArr, int length);
bool append_arr(struct Arr *pArr, int val);
bool insert_arr(struct Arr *pArr, int index, int val);
// bool delete_arr();        // 未實現
// int get();                // 未實現
bool is_empty(struct Arr *pArr);
// bool is_full();           // 未實現
// void sort_arr();          // 未實現
void show_arr(struct Arr *pArr);
// void inversion_arr();     // 未實現

已實現核心函數

初始化與記憶體分配

void init_arr(struct Arr *pArr, int length) {
    pArr->pBase = (int *)malloc(sizeof(int) * length);
    if (NULL == pArr->pBase) {
        printf("動態記憶體分配失敗!\n");
        exit(-1);
    }
    pArr->len = length;
    pArr->cnt = 0;
}

尾部追加

bool append_arr(struct Arr *pArr, int val) {
    if (pArr->cnt < pArr->len) {
        pArr->pBase[pArr->cnt] = val;
        (pArr->cnt)++;
        return true;
    }
    printf("陣列已滿\n");
    return false;
}

指定位置插入(1-based 索引)

bool insert_arr(struct Arr *pArr, int index, int val) {
    if (pArr->cnt < pArr->len && index <= pArr->cnt) {
        for (int i = pArr->cnt - 1; i >= index - 1; i--) {
            pArr->pBase[i + 1] = pArr->pBase[i];
        }
        pArr->pBase[index - 1] = val;
        (pArr->cnt)++;
        return true;
    }
    printf("插入失敗\n");
    return false;
}

遍歷與判空

void show_arr(struct Arr *pArr) {
    if (is_empty(pArr)) { printf("陣列為空\n"); return; }
    for (int i = 0; i < pArr->cnt; i++) printf("%d", pArr->pBase[i]);
}

bool is_empty(struct Arr *pArr) {
    return pArr->cnt == 0;
}

主程式測試

int main(void) {
    struct Arr arr;
    init_arr(&arr, 6);
    append_arr(&arr, 3);
    append_arr(&arr, 2);
    append_arr(&arr, 9);
    insert_arr(&arr, 2, 7); // 第2位插入7
    show_arr(&arr);         // 輸出: 3729
    return 0;
}

與完整版差異對比

功能本版本完整版 (ID:198338)
刪除元素❌ 僅聲明✅ 完整實現
獲取元素❌ 僅聲明✅ 實現 get()
判斷已滿❌ 僅聲明✅ 實現 is_full()
排序❌ 僅聲明✅ 直接插入排序
倒置❌ 僅聲明✅ 實現 inversion_arr()
代碼規範HTML 實體編碼殘留純代碼可直接編譯

學習建議

  1. 先理解本版本的「骨架思維」:結構體封裝 + 函數指標式模組化。
  2. 嘗試自行補全缺失功能(刪除、查找、排序),再對照完整版驗證。
  3. 注意原始碼中的 HTML 實體(如 `&lt;`、`&gt;`、`&amp;`)需還原為 `<`、`>`、`&` 才能編譯。

此版本記錄了從介面設計到核心邏輯落地的演進過程,是「由簡入繁」學習資料結構實作的優秀樣本。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved