#include<stdio.h>
#include<stdlib.h>
#define Size 100000 //宏定义Size的值为100000
typedef struct Table {
int* head; //声明一个名为head的数组
int length; //此数组的长度
int size; //此数组的大小
}table;
table InitTable() { //初始化线性表
table t; //创建一个名为t的线性表
t.head = (int*)malloc(Size * sizeof(int)); //为此线性表申请空间
if (!t.head) {
printf("申请空间失败!");
exit(0);
}
t.length = 0; //申请空间成功,初始化线性表
t.size = Size;
return t;
}
void DisplayTable(table t) {
for (int i = 0; i < t.length; i++) {
printf("%d\t", t.head[i]);
}
printf("\n");
}
table AddTable(table t, int element, int place) {
//检查插入位置是否正确
if (place > t.length + 1 || place < 1) {
printf("插入位置错误");
return t;
}
//判断表是否已经满了,如果满了就重新申请空间
if (t.length == t.size) {
t.head = (int*)realloc(t.head, (t.size + 1) * sizeof(int));
if (!t.head) {
printf("空间不足!");
return t;
}
t.size++;
}
//准备工作完成开始插入操作
for (int i = t.length ; i >= place - 1; i--) {
t.head[i] = t.head[i - 1];
}
t.head[place - 1] = element;
t.length++;
return t;
}
table DelTable(table t,int place) {
//判断删除位置是否合理
if (place<1 || place>t.length) {
printf("删除位置错误");
return t;
}
//开始删除操作
for (int i = place; i < t.length ; i++) {
t.head[i - 1] = t.head[i];
}
t.length--;
return t;
}
int main() {
table t = InitTable(); //调用InitTable初始化线性表
//printf("%d", t.length);
for (int i = 0; i<10 ; i++) { //给线性表t赋值
t.head[i] = i+1;
t.length++;
}
DisplayTable(t); //调用DisplayTable打印线性表的内容
printf("%d\n", t.length);
t = AddTable(t, 520, 9); //调用AddTable插入520
DisplayTable(t);
printf("%d\n", t.length);
t= DelTable(t, 8); //调用DelTable删除第8个元素
DisplayTable(t);
printf("%d\n", t.length);
return 0;
}