编辑代码

#include <stdio.h>
#include <stdlib.h>
#define Size 5
// 定义顺序表
typedef struct Table {
    int* head;
    int length;
    int size;

} table;
table initTable() {
    table t;
    t.head = (int*)malloc(Size * sizeof(int));
    if (!t.head) {
        printf("申请内存失败");
        exit(0);
    }
    t.length = 0;
    t.size = Size;
    return t;
}
// 输出数组中的元素
void showTable(table t) {
    for (int i = 0; i < t.length; i++) {
        printf("%d ", t.head[i]);
    }
    printf("\n");
}
// 添加元素
table addTable(table t, int elem, int index) {
    if (index < 0 || index > t.length) {
        printf("输入的插入位置有误");
    }
    //申请空间
    if (t.size == t.length) {

        t.head = (int*)realloc(t.head, (t.size + 1) * sizeof(int));
        if (!t.head) {
            printf("申请内存失败");
            exit(0);
        }
        t.size++;
    }
    //并逐个后移
    for (int i = t.length - 1; i > index; i--) {
        t.head[i + 1] = t.head[i];
    }
    t.head[index] = elem;
    t.length++;
    return t;
}
// 删除元素
table delTable(table t, int index) {
    if (index < 0 || index > t.length) {
        printf("输入的插入位置有误");
    }
    // 删除操作
    for (int i = index; i < t.length; i++) {
        t.head[i] = t.head[i + 1];
    }
    t.length--;
    return t;
}
// 查找元素
int findTable(table t, int elem) {
    for (int i = 0; i < t.length; i++) {
        if (t.head[i] == elem) {
            return i;
        }
    }
    return -1;
}
// 修改元素
table updateTable(table t, int elem, int index) {
    if (index < 0 || index > t.length) {
        printf("输入的插入位置有误");
    }
    t.head[index] = elem;
    return t;
}
int main() {
    table t = initTable();
    for (int i = 0; i < Size; i++) {
        t.head[i] = i;
        t.length++;
    }
    showTable(t);
    //updateTable(t,8,0);
    t = addTable(t, 8, 0);
    //delTable(t,0);
    showTable(t);
    return 0;
}