问题遇到的现象和发生背景
我写这个子函数,他就说我参数类型有问题,但是我写别的子函数,他也不报错呀
问题相关代码
#include<stdio.h>
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
//Status 为函数的类型,其值是函数结果状态代码,如OK等
typedef int Status;
// ElemType为数据元素类型,根据实际情况而定,这里假设为int
typedef int ElemType;
#define MAXSIZE 50 /* 存储空间初始分配量 */
typedef struct
{
ElemType data[MAXSIZE]; /* 数组,存储数据元素 */
int length; /* 表当前有效长度 */
}SqList;
void input(SqList *L)
{
int pre,i=0;
L->length =0;
for(i=0;;i++)
{
scanf("%d",&pre);
if(pre==-1)
{
break;
}
else
{
L->data[i]=pre;
L->length++;
}
}
}
void ListInsert_Sq(SqList *L,int i,int e) //在L中第i个位置之前插入新的数据元素e,L的长度加1。
{
// 插入的位置是i
int j;
int len=L->length ;
int b[len+1];
for(j=0;j<len+1 ;j++)
{
if(j<i)
{
b[j]=L->data [j];
}
else if(j==i)
{
b[j]=e;
}
else
{
b[j]=L->data [j-1];
}
} // 插入后的数全在b 数组中
int k;
L->length =len+1;
for(k=0;k<len+1;k++)
{
L->data [k]=b[k];
}
}
int main()
{
int i;
SqList a;
ElemType e;
input(&a); // 要修改a数组中的数据,所以传地址
ListInsert_Sq(a, 2, 4); // 在第二个位置之前插入e
for(i=0;i<a.length ;i++)
{
printf("%d ",a.data [i]);
}
return 0;
}
运行结果及报错内容
我想要达到的结果
比如输入数组为[1,3,4,3,5],插入后输出应该是[1,4,3,4,3,5]