1.结构体来表示线性表
typedef struct
{
int *data; //数组
int length; //现在长度
int MaxSize;//最大长度
}book;
2.初始化函数
book Orength(int L) { //初始化
book list;
list.data = (int*)malloc(sizeof(int) * L);
for (int i = 0; i < L; i++) {
scanf("%d", &list.data[i]);
}
list.length = L;
list.MaxSize = L;
return list;
}
3.增加线性表长度函数
book* AddLength(book *list,int L) { //传入一个线性表和要增加的长度
int* p = list->data; //开启一个地址存储原来线性表的data数据
list->data = (int*)malloc(sizeof(int)*list->MaxSize+L); //开启新长度的地址(使用malloc函数要使用malloc库,头文件)
for (int i = 0; i < list->length; i++) //将p的data还给List的data
list->data[i] = p[i];
list->MaxSize += L; //更新线性表长度
free(p); //别忘了释放p的空间哦
return &list;
}
4.其它的一些操作
//在特定的点插入数据
void insert(book*list,int index,int result) {
AddLength(&list, 1);//先把线性表扩大1位
for (int i = index; i < list->MaxSize; i++) {
list->data[i]=list->data[i+1];
}
list->data[index] = result;
}
//遍历线性表
void Bianli(book* list) {
for (int i = 0; i < list->MaxSize; i++) {
printf("data[%d]=/%d", i, list->data);
}
}
//放空线性表
void free(book*list) {
free(list->data);
}