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

資料結構教材實作:順序表求並集 A = A ∪ B

     編輯:關於C語言

資料結構教材實作:順序表求並集 A = A ∪ B

算法思路

  1. 找到順序表 A 的尾部(當前長度處)。
  2. 遍歷順序表 B 的每個元素。
  3. 若 B 中元素不在 A 中,則追加插入 A 尾部。
  4. 重複直到 B 遍歷完畢。

核心程式碼 (Union.c)

#include "SequenceList.c"  // 復用順序表基本操作

void Union(SqList &A, SqList B) {
    for (int i = 0; i < B.length; ++i) {
        ElemType e = B.elem[i];
        if (LocateElem(A, e) == 0) {  // A 中不存在
            ListInsert(A, A.length + 1, e);
        }
    }
}

模組化設計優勢

將「查找元素」、「插入元素」封裝為獨立函數,Union 僅負責協調流程,提升可讀性與維護性。這也是結構化程式設計的典型體現。

測試案例與結果

int main() {
    SqList A, B; InitList(A); InitList(B);
    int a[] = {1,2,3}, b[] = {3,4,5};
    for (int x : a) ListInsert(A, A.length+1, x);
    for (int x : b) ListInsert(B, B.length+1, x);
    Union(A, B);
    ListTraverse(A); // 輸出: 1 2 3 4 5
    return 0;
}

並集運算測試結果

檔案結構

  • Union.h:介面宣告
  • Union.c:實作
  • Union-main.c:測試主程式

本範例展示如何在順序表 ADT 基礎上構建更高層邏輯,適合教學與工程參考。

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