#include<stdio.h>
#include<stdlib.h>
#include<errno.h>
#define InitSize 10
#define Max_Size 10
//1.顺序表上基本操作的实现
//顺序表的初始化
typedef struct
{
int* data; //指示动态分配数组指针
int MaxSize;//顺序表的最大容量
int length;//顺序表的当前长度
} SeqList;
typedef struct
{
int* data[Max_Size]; //指示动态分配数组指针
int length;//顺序表的当前长度
} SqList;
void InitList(SeqList* L)
{
L->data = (int*)malloc(InitSize * sizeof(int));
L->length = 0;
L->MaxSize = InitSize;
}
void IncreaseSize(SeqList* L, int len)
{
int* p = L->data;
L->data = (int*)malloc(InitSize * sizeof(int) + 5);
if (L->data == NULL)
{
printf("%s\n", strerror(errno));
}
for (int i = 0; i < L->length; i++)
{
L->data[i] = p[i];
}
L->MaxSize =L-> MaxSize + len;
free(p);
}
void ListInsert(SqList* L, int i,int e)
{
if (i<1 || i>L->length + 1)
return 1;
if (L->length >= Max_Size)
return 1;
for (int j = L->length; j >= i; j--)
{
L->data[j] = L->data[j - 1];
L->data[j - 1] = e;
L->length++;
}
}
void ListDelete(SqList* L, int i, int e)
{
if (i<1 || i>L->length)
return 0;
e = L->data[i - 1];
for (int j = i; j < L->length; j++)
{
L->data[j-1] = L->data[j];
L->length--;
}
return 1;
}
int main()
{
SeqList L;//声明一个顺序表
InitList(&L);//初始化顺序表
IncreaseSize(&L, 5);//增加内存
ListInsert(&L, 3, 3);//插入数据
int e = -1;
ListDelete(&L, 3, &e);
if (ListDelete)//删除数据
printf("已删除第3个元素,删除元素的值为=%d\n", e);
else
printf("位序不合法,删除失败\n");
return 0;
}