/完成顺序表的插入和删除操作
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#include<string.h>
#define M 100
#define ERROR 0
#define OK 1
//定义一个复杂节点的顺序表
typedef struct
{
int elem[M]; //顺序表的元素
int length; //顺序表当前长度
}SqList; //表的结构的定义
int InitList(SqList &L);
int CreatList(SqList &L, int n);
int Listin(SqList &L,int i, int e);
int ListDelete(SqList &L,int i);
int main()
{
SqList L1; //生成一个顺序表L1
InitList(L1);//对顺序表L1进行初始化
int j;
printf("原顺序表:\n");
CreatList(L1,50);
int e;
e=101;
int i=1;
printf("\n插入后:\n");
Listin(L1,i,e);
printf("\n%d\n",L1.elem[0]);
printf("\n删除后:\n");
ListDelete(L1,6);
printf("\n不断测试!!!");
}
//传一个参数,并返回一个值
int InitList(SqList &L)
//初始化并构造一个空的顺序表
{
memset(L.elem,0,sizeof(L)); //初始化数据为0
L.length=0; //空表长度为零
return OK;
}
int CreatList(SqList &L,int n) //创建顺序表函数,并初始化前n个数据
{
if(n<0||n>M) //判断n值是否合法
return ERROR;
int i;
for(i=0;i<n;i++) //初始化数据
{
L.elem[i]=i;
printf("%5d",L.elem[i]);
L.length++;
}
return OK;
}
int Listin( SqList &L, int i, int e)//在顺序表的第i个位置前插入一个新的元素e
{
int j;
if(i<1||i>L.length+1)
{
printf("位置无效!\n");
return ERROR; //判断i值是否合法
}
if(L.length>=M)
printf("当前存储空间已满!\n");
return ERROR; //当前存储空间已满
for(j=L.length;j>=i;j--)
L.elem[j]=L.elem[j-1]; //将元素插入的第i个元素及之后的位置后移一个单位
L.elem[i-1]=e; //将新元素放入第i个位置
L.length++; //表长增加1
printf("\n%d\n",L.length);
for(j=0;j<L.length;j++)
{
printf("%5d ",L.elem[j]);
}
return OK;
}
int ListDelete(SqList &L, int i)//删除顺序表中的第i个数据元素
{
if((i<1)||(i>L.length))
{
printf("位置无效!\n");
return ERROR; //判断i值是否合法
}
int j;
for(j=i;j<=L.length-1;j++)
{
L.elem[j-1]=L.elem[j]; //被删除的元素往后移一个单位
}
L.length--; //顺序表的长度减1
for(int n=0;n<L.length;n++)
{
printf("%5d",L.elem[n]);
}
return OK;
}
为什么Listin无法调用