问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
应该就是Insertlist这一步的问题,但是if里面的内容好像也没错啊
#include<stdio.h>
#include<cstring>
#include<iostream>
#define MAX_SIZE 1000
#define Elemtype int
#define Status int
/******************************************基本操作函数*****************************************************************************/
/*构建一个顺序表类型*/
typedef struct
{
Elemtype data[MAX_SIZE];
int length;
}Sqlist;
/*初始化顺序表函数,构造一个空的顺序表*/
Status Intlist(Sqlist& L)
{
memset(L.data, 0, sizeof(L));//可以用"0"来初始化任何类型数组!比如 memset(arr,0,sizeof(arr));//arr可以是char或int等类型数组!
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;
}
/*插入函数,在位置i上插入函数后,i后位置依次向后移动一位*/
bool Insertlist(Sqlist& L, int i, Elemtype e)//Insertlist是在Insert函数中调用的
{
if (i<1 || i>L.length + 1)
{
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 Printlist(Sqlist L)
{
printf("当前顺序表所有元素为");
for(int i=0;i<L.length;i++)
{
printf("%d ",L.data[i]);
}
printf("\n");
}
//创建顺序表函数
void creat(Sqlist L)
{
int n;bool flag;
L.length=0;
printf("请输入要创建的顺序表长度(n>0)\n");
scanf("%d",&n);
printf("请输入n个数,用空格隔开\n");
flag=Creatlist(L,n);
printf("L.length=%d",L.length);
if(flag==true)
{
printf("创建成功\n");
Printlist(L);
}
else
{
printf("输入长度非法\n");
}
}
/*插入功能函数,调用Insertlist函数来实现*/
void Insert(Sqlist& L)
{
int place; Elemtype e; bool flag;
printf("请选择要插入的位置以及元素,从第一位开始\n");
scanf("%d%d", &place, &e);
printf("i=%d",place);
flag = Insertlist(L, place, e); //Insert函数(L是线性表,插入位置,插入数字)
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;
}