c语言顺序表错误,顺序表实现错误(C语言版),求助!

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

//VS2010 环境

/*

当我选择操作1之后,

立即选择操作2,然后输入三个数据1,2,3

问题出现了:得到数据为测试1:-858993457(L->length)

为什么?

之后就是选择操作3,答案总是指定位置不存在!

*/

#include

#include

#include

#define MAXSIZE 100

typedef int DataType;

void Init_Sq_list(Sq_list);

void InPut(Sq_list);

void Insert_Sq_list(Sq_list );

typedef struct LNode

{

DataType data[MAXSIZE];

int length;

}Sq_list;

void main()

{

Sq_list SL;

int Opration,Flag=1;

while(Flag==1)

{

printf("请输入你想要的操作:\n1.创建顺序表;\n2.输入数据;\n3.插入运算;\n4. 删除运算;\n5.查找运算;\n6.退出!\n\n");

scanf("%d",&Opration);

switch(Opration)

{

case 1:

printf("创建顺序表:\n");

Init_Sq_list(&SL);

break;

case 2:

InPut(&SL);

break;

case 3:

printf("插入运算:\n");

Insert_Sq_list(&SL);

break;

case 6:

Flag=0;

break;

default:

break;

}

}

}

void Init_Sq_list(Sq_list *L) //地址传值的方式

{

L=(Sq_list *)malloc(sizeof(Sq_list));

L->length=0;

}

void InPut(Sq_list *L)

{

int i,e;

printf("请输入你要输入数据的个数:\n");

scanf("%d",&e);

printf("输入你想要输入的数据:\n");

for(i=1;i<=e;i++)

{

scanf("%d",&L->data[i]);

L->length=L->length+1;

}

printf("测试1:%d",L->length);

//当插入三个数据“1,2,3”之后,得到测试1:-858993457

}

void Insert_Sq_list(Sq_list *L)

{

int j,i;

DataType x;

printf("测试2:%d",L->length);

printf("请输入相应的位置:\n");

scanf("%d",&i);

printf("请输入相应的数据:\n");

scanf("%d",&x);

if(L->length==MAXSIZE)

{

printf("顺序表已满!无法插入!\n");

exit(1);

}

if(i<0||i>L->length)//

{

printf("指定位置不存在!\n");

exit(1);

}

for(j=L->length-1;j>=i-1;j--)

{

L->data[j+1]=L->data[j];

}

L->data[i-1]=x;

L->length++;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值