純 C 語言實作的陣列基本操作函數庫,包含插入、刪除、查詢、列印四大核心功能,採用靜態陣列模擬動態陣列行為,適合嵌入式系統或教學演示。
#define MAX 100 // 插入元素:位置 i (1-based),值 x,返回新長度 int insert(int a[], int n, int i, int x); // 刪除元素:位置 i (1-based),返回新長度 int del(int a[], int n, int i); // 查詢元素:值 x,返回位置 (1-based) 或 -1 int search(int a[], int n, int x); // 列印陣列 void printArray(int a[], int n);
int insert(int a[], int n, int i, int x) {
if (n + 1 > MAX) {
printf("無插入空間\n");
return n;
}
if (i < 1 || i > n + 1) {
printf("插入位置非法\n");
return n;
}
// 從後往前搬移,騰出位置 i-1 (0-based)
for (int j = n - 1; j >= i - 1; --j) {
a[j + 1] = a[j];
}
a[i - 1] = x;
return n + 1;
}
int del(int a[], int n, int i) {
if (i < 1 || i > n) {
printf("刪除位置非法\n");
return n;
}
// 從前往後覆蓋
for (int j = i - 1; j < n - 1; ++j) {
a[j] = a[j + 1];
}
return n - 1;
}
int search(int a[], int n, int x) {
for (int i = 0; i < n; ++i) {
if (a[i] == x) return i + 1; // 返回 1-based 位置
}
return -1;
}
void main() {
int n, a[MAX];
printf("輸入陣列元素個數: ");
scanf("%d", &n);
for (int i = 0; i < n; ++i) scanf("%d", &a[i]);
int index, x;
printf("請輸入插入位置和值: ");
scanf("%d %d", &index, &x);
n = insert(a, n, index, x);
printArray(a, n);
printf("請輸入刪除位置: ");
scanf("%d", &index);
n = del(a, n, index);
printArray(a, n);
printf("請輸入查詢元素: ");
scanf("%d", &x);
int pos = search(a, n, x);
if (pos != -1) printf("%d 的位置: %d\n", x, pos);
else printf("未找到 %d\n", x);
}
| 操作 | 時間複雜度 | 空間複雜度 | 適用場景 |
|---|---|---|---|
| 插入 | O(n) | O(1) | 小規模、低頻修改 |
| 刪除 | O(n) | O(1) | 同上 |
| 查詢 | O(n) | O(1) | 無序資料線性搜尋 |
malloc/realloc) 突破固定大小限制printf,分離邏輯與輸出