#include<stdio.h>
#include<stdlib.h>
#define MaxSize 50
typedef int ElemType;//顺序表中元素的类型
//静态分配
typedef struct {
ElemType data[MaxSize];//定义数组,存储元素
int length;//当前顺序表中有多少元素
}SqList;
//插入
bool ListInsert(SqList& L, int i, ElemType e)
{
if (i<1 || i>L.length + 1)//判断要插入的位置是否合法
return false;
if (L.length >= 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;
}
//删除
bool ListDelete(SqList& L, int i, ElemType& e)
{
if (i<1 || i>L.length)//判断位置是否合法
return false;
e = L.data[i - 1];//获取表中对应的元素
for (int j = i; j < L.length; j++)
L.data[j - 1] = L.data[j];
L.length--;//删除元素,表长-1
return true;
}
void PrintList(SqList& L)
{
for (int i = 0; i < L.length; i++)
{
printf("%4d", L.data[i]);
}
printf("\n");
}
int main()
{
SqList L;
bool ret;//查看返回值
ElemType del;//存储要删除的元素
L.data[0] = 1;
L.data[1] = 2;
L.data[2] = 3;
L.length = 3;
ret = ListInsert(L, 2, 60);//在第2个位置插入元素60
if (ret)
{
printf("插入成功\n");
PrintList(L);
}
else {
printf("插入失败\n");
}
ret = ListDelete(L, 1, del);
if (ret) {
printf("删除成功\n");
PrintList(L);
}
else {
printf("删除失败\n");
}
return 0;
}