小白想问程序总是一直报错“有多个 重载函数 "insetElem" 实例与参数列表匹配” 要怎么改?
问题描述:
#include<stdio.h>
#include<string.h>
#define maxsize 10
typedef struct
{
int data[maxsize];
int length;
}Sqlist;
int insetElem(Sqlist, int, int);
int insetElem(Sqlist &L,int p, int e)//定义插入之后的功能,还要自己输入数据 e是插入的元素,p是插入的位置
{
int i;
if (p<0 || p>L.length || L.length > maxsize)//判断插入的位置是否合法
printf("输入错误");
return 0;
for (i = L.length - 1; i >= p; i--)//
L.data[i + 1] =L.data[i];
L.data[p] = e;
L.length++;//顺序表的长度加1
return 1;
}
int main()
{
int d,f;
Sqlist l;
int i;
{
printf("输入原数组\n");
scanf("%d", &l.data[maxsize]); }
printf("输入插入的位置和值\n");
scanf("%d%d", &d, &f);
insetElem (l,d,f);
return 0;
}
做的是顺序表的插入,一直改不对,求解答!
错误显示
E0308 有多个 重载函数 "insetElem" 实例与参数列表匹配:
C2668 “insetElem”: 对重载函数的调用不明确
答
修改如下,供参考对照:
#include<stdio.h>
#include<string.h>
#define maxsize 10
typedef struct
{
int data[maxsize];
int length;
}Sqlist;
//int insetElem(Sqlist, int, int);
int insetElem(Sqlist& L, int p, int e)//定义插入之后的功能,还要自己输入数据 e是插入的元素,p是插入的位置
{
int i;
if (p < 0 || p > L.length || L.length >= maxsize) {//判断插入的位置是否合法
printf("插入的位置错误");
return 0;
}
for (i = L.length; i >= p; i--)
L.data[i] = L.data[i-1];
L.data[p-1] = e;
L.length++;//顺序表的长度加1
return 1;
}
int main()
{
int d, f;
Sqlist l;
l.length = 0;
int i;
printf("输入原数组\n");
for (i = 0; i < 5; i++)//假设输入5个
{
scanf("%d", &l.data[i]);
l.length++;
if (l.length == maxsize) {
printf("表已满!\n");
break;//大于表上限,退出
}
}
printf("输入插入的位置和值\n");
fflush(stdout); rewind(stdin);
scanf("%d%d", &d, &f);
insetElem(l, d, f);
for (i = 0; i < l.length; i++)//插入后输出看看
printf("%d ", l.data[i]);
return 0;
}
答
把第10行删了就行,