#include<stdio.h>
#include<stdlib.h>
#define InitSize 100
typedef struct { //定义一个名为Sqlist的结构体
int *data;
int MaxSize;
int length;
} Sqlist;
//初始化顺序表
void InitList(Sqlist *L) {
L->data = (int*)malloc(InitSize*sizeof(int));
L->length = 0;
L->MaxSize = InitSize;
}
//扩大表
void IncreaseList(Sqlist *L,int len) {
int *p = L->data;
L->data = (int *)malloc((InitSize+len)*sizeof(int));
for (int i = 0 ; i<L->length ; i++)
L->data[i] = p[i];
L->MaxSize = L->MaxSize + len;
free (p);
}
//在表的某个位置插入元素e
bool ListInsert(Sqlist *L,int i,int e) {
if (i<1 || i>L->length+1) //顺序表是连续的 假如表长为7则可在第8个位置插入 所以>Length+1
return false;
if (L->length >= L->MaxSize ) //表满
return false;
for (int j = L->length ; j<=i ; j--)
L->data[j]=L->data[j-1];
L->data[i-1] = e;
L->length++;
return true;
}
//在某个位置删除并将元素值返回给e
bool ListDlete(Sqlist *L , int i , int *e) {
if (i<1 || i>L->length)
return false;
*e = L->data[i-1];
for (int j=i ; j<L->length ; j++)
L->data[i-1] = L->data[i];
L->length--;
return true;
}
//顺序表按位查找
int GetElem(Sqlist *L,int i) {
return L->data[i-1];
}
//顺序表按值查找
int LocateElem(Sqlist *L,int i) {
for (int j = 0 ; j<L->length ; j++) {
if (L->data[j] == i)
return i+1;
}
return 0;
}
int main()
{
int len,i,e;
Sqlist L; //声明一个顺序表
InitList(&L); //初始化表
IncreaseList(&L,len); //扩大表 len为长度
if (ListInsert(&L,i,e))
printf("插入元素成功\n");
else
printf("插入元素失败");
if(ListDlete(&L,i,&e))
printf("删除元素成功,删除元素为%d\n",e);
else
printf("删除失败");
return 0;
}