#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);
t = addTable(t, 8, 0);
showTable(t);
return 0;
}