#include<stdio.h>
#include<cstring>
#define MAX_SIZE 1000
#define typedf int
#define Status int
#define Elemtype int
//构建一个线性表
typedef struct
{
int data[MAX_SIZE];
int length=0;
}Sqlist;
//初始化线性表
Status Intlist(Sqlist &L)
{
memset(L.data,0,sizeof(L));
L.length=0;
return 0;
}
//初始化前n个数字
bool Creatlist(Sqlist&L,int n)
{
if(n<0||n>MAX_SIZE)
{
return false;
}
for(int i=0;i<n;i++)
{
scanf("%d",&L.data[i]);
L.length++;
}
return true;
}
bool Insertlist(Sqlist&L,int i,Elemtype e)
{
if(i<1||i>L.length)
{
printf("位置无效\n");
return false;
}
if(L.length>MAX_SIZE)
{
printf("储存空间已经满\n");
return 0;
}
for(int j=L.length;j>=i;j--)
{
L.data[j]=L.data[j-1];
}
L.data[i-1]=e;
L.length++;
return true;
}
/*****************************功能函数****************************************/
void Creat(Sqlist &L)
{
bool flag;
int n=0;
printf("请输入线性表长度\n");
scanf("%d",&n);
printf("请依次输入n个数字并用空格隔开\n");
flag=Creatlist(L,n);
if(flag==true)
{
printf("线性表创建成功\n");
}
else if(flag==false)
{
printf("线性表创建失败\n");
}
}
void Insert(Sqlist &L)
{
bool flag;
Elemtype A;
int place;
printf("请输入插入数字和插入位置,中间用空格隔开\n");
scanf("%d%d",&A,&place);
flag=Insertlist(L,place,A);
if(flag==1)
{
printf("插入完成\n");
for(int i=0;i<L.length;i++)
{
printf("%d ",&L.data[i]);
}
}
}
int main()
{
Sqlist L;
Intlist(L);
Creat(L);
Insert(L);
return 0;
}
93行printf的时候不需要加&,加了&打印的是每个数据元素的地址,而不是数据本身。应该写成
printf("%d ",L.data[i]);