2 aimeimeits aimeimeiTS 于 2016.03.23 15:07 提问

线性表出错,找不到原因

#include
#include
#include
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10

typedef struct
{
char name[10];
char number[20];
}Phonenum;

typedef struct
{
Phonenum *elem;
int length;//当前长度
int listsize;//当前分配的存储容量
}SqList;

void ST(int ts) //出错时指示错误状态
{
if(ts==0)
printf("ERROR!\n\n");
if(ts==-2)
printf("OVERLOW!\n\n");
if(ts==-1)
printf("INFEASIBLE!\n\n");
if(ts==1);
else;
}

int InitList(SqList &L)//初始化
{
L.elem=(Phonenum *)malloc(LIST_INIT_SIZE*sizeof(Phonenum));
if(!L.elem) exit(OVERFLOW);
L.listsize=LIST_INIT_SIZE;
L.length=0;
return OK;
}

int Build(SqList &L)//建立表
{
int i,n;
printf("请初始化n个人的电话信息:\n");
scanf("%d",&n);
if(n>LIST_INIT_SIZE)//如果n大于当前空间
{
L.elem=(Phonenum *)realloc(L.elem,(n+LISTINCREMENT)*sizeof(Phonenum));
if(!L.elem)
exit(OVERFLOW);
L.listsize=n+LISTINCREMENT;
}
printf("请输依次输入%d人的姓名和电话号码\n",n);
for(i=0;i {
printf("第%d个:",i+1);
scanf("%s %s",(L.elem+i)->name,(L.elem+i)->number);
}
printf("\n");
L.length=n;
return OK;
}

void Print(SqList &L)//输出表中元素
{
int i;
for(i=0;i printf("%d号位置: %s %s\n",i+1,(L.elem+i)->name,(L.elem+i)->number);
printf("\n");
}

void Tips()//提示函数
{
printf("选择编号以执行对应操作:\n");
printf("1 输出\n");
printf("2 删除给定位置i数据\n");
printf("3 在i位置处插入信息\n");
printf("0 退出\n\n");
}

int ListDelete(SqList &L,int i)//删除第i个元素
{
int x;
if(i=L.length)
return ERROR;
for(x=i+1;x<L.length;x++)
(L.elem+x-1)=(L.elem+x);
L.length--;
printf("成功删除信息!\n\n");
return OK;
}

int ListInsert(SqList &L,int i,SqList &X)//插入一个人的信息在位置i处,使仍然有序
{
int k;
if(L.length=L.listsize) //判断线性表是否已满
{
L.elem=(Phonenum )realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(Phonenum));
if(!L.elem) //若再分配失败
exit(OVERFLOW);
L.listsize+=LISTINCREMENT;
}
for(k=L.length;k>i;k--)
{
strcpy((
(L.elem+k)).name,(*(L.elem+k-1)).name);
strcpy((*(L.elem+k)).number,(*(L.elem+k-1)).number);
}
strcpy((L.elem+i)->name,X.elem->name);
strcpy((L.elem+i)->number,X.elem->number);
L.length++;
printf("成功插入!\n");
return OK;
}

int main()
{
Phonenum xx;
int op,x;
SqList L,i;
InitList(L);//初始化
Build(L);//建立表
Tips();
scanf("%d",&op);
while(op)
{
switch(op)
{
case 1:
Print(L);
break;
case 2:
printf("请输入要删除的位置i:\n");
scanf("%d",&x);
ST(ListDelete(L,x-1));//第i个元素对应的下标为i-1
break;
case 3:
printf("请输入要插入的位置:\n");
scanf("%d",&i);
printf("请输依次输入姓名和电话号码\n");
scanf("%s %s",xx.name,xx.number);
ST(ListInsert(L,i,xx));

break;
case 0:
exit(OK);
}
Tips();
scanf("%d",&op);
}
return 0;
}

1个回答

caozhy
caozhy   Ds   Rxr 2016.03.23 15:32
 这代码编译都不能编译
ListInsert(L,i,xx)
xx是Phonenum,而你的函数原型
int ListInsert(SqList &L,int i,SqList &X)
最后一个参数是SqList
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
游戏运行出错原因游戏运行出错原因及解决方案.txt
游戏运行出错原因及解决方案游戏运行出错原因及解决方案.游戏运行出错原因及解决方案.
电脑蓝屏,系统死机,内存溢出,硬件不兼容原因查看器
电脑蓝屏了找不到原因; 电脑死机了找不到原因; 电脑卡住不动了找不到原因; 电脑硬件不兼容找不到原因; 电脑内存溢出了找不到原因 本工具直接显示错误原因,专业人士必备工具查看器。
jerror.h文件找不到及出错的原因
In order to compile, you must first build IJG's JPEG Tools code library, available at ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz.        由于vs的编译库中没有包含jerror.h的文件,这些文件包含在JPEG Tools code library
Stack栈类与、Queue队列与线性表的区别和联系
Stack栈类与、Queue队列与线性表的区别和联系 栈和队列都属于特殊的线性表 一、定义 1、线性表(linear list): 是数据结构的一种,一个线性表是n个具有相同特性的数据元素的有限序列。数据元素是一个抽象的符号,其具体含义在不同的情况下一般不同。 2、栈(Stack): 栈是限定仅能在表尾进行插入或删除操作的线性表。对栈
abaqus常见问题汇总
学习abaqus, 查找出错原因。在abaqus有限元分析中出错的常见原因汇总
kingcms找不到数据库连接的原因分析
1、数据库忙因数据访问太频繁造成遇忙的情况,经常在ACCESS数据库里遇到,这是ACCESS数据库本身的问题。2、服务器故障或网络延时MSSQL数据库服务器出现了意外故障,比如重启等;或网络延时造成的无法正常读取。3、数据库崩溃太频繁的数据读写造成的数据库崩溃,经常在ACCESS数据库里遇到这种情况,解决方法是下载后用ACCESS修复即可。
PS出错原因及解决方法
PS出错原因及解决方法
关于xp蓝屏原因死机的原因
上面讲了很多关于XP蓝屏的原因,各种出错的原因
关于在EventBus混淆打包问题
解决EventBus打包混淆问题
线性表的定义
线性表的定义 线性表: 零个或多个数据元素的有限序列。 3.1 开场白 各位同学,大家好。 今天我们要开始学习数据结构中最常用和最简单的一种结构,在介绍它之前先讲个例子。 我经常下午去幼儿园接送儿子,每次都能在门口看到老师带着小朋友们,一个拉着另一个的衣服,依次从教室出来。而且我发现很有规律的是,每次他们的次序都是一样。比如我儿子排在第5个,每次他都是在第5个,前面同样是那个小女孩,后