顺序表程序一运行就出现顺序表.exe停止工作 求高手指教!
程序编译没报错
大意是通过键盘使用scanf语句输入自己想要输入的顺序表元素
想输入五个元素 然后在第六个位置插入99
可惜一运行 输入一个5之后就显示 顺序表.exe 停止工作了
分为主函数跟头文件
主函数:
#define maxsize 100
typedef int datatype;
#include<stdio.h>
#include"hh.h"
void main()
{
sqlist mylist;
int n,x,i;
printf("enter the number of elements:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("enter the %st number:",i+1);
scanf("%d",&x);
mylist.list[i]=x;
}
//insert(&l,6,99);
printf("print l:\n");
print(&mylist);
}
============================================
头文件#include"hh.h"
typedef struct
{
datatype list[maxsize];
int length;
}sqlist;
void initiate(sqlist *l)
{
l->length=0;
}
int length(sqlist *l)
{
return l->length;
}
int insert(sqlist *l,int i,datatype x)
{
int j;
if(l->length==maxsize)
{
printf("已满元素不可插!\n");
return 0;
}
else if(i<1 || i>l->length+1)
{
printf("参数出错!\n");
return 0;
}
else
{
for(j=l->length-1;j>=i-1;j--)
l->list[j+1]=l->list[j];
l->list[i-1]=x;
l->length++;
return 1;
}
}
int deletewithoutx(sqlist *l,int i)
{
int j;
if(l->length==0)
{
printf("表是空的,不可删!\n");
return 0;
}
else if(i<1 || i>l->length)
{
printf("参数出错!\n");
return 0;
}
else
{
for(j=i;j<=l->length-1;j++)
l->list[j-1]=l->list[j];
l->length--;
return 1;
}
}
int deletewithx(sqlist *l,int i,datatype *x)
{
int j;
if(l->length==0)
{
printf("表示空的,元素不可删!\n");
return 0;
}
else if(i<1 || i>l->length)
{
printf("参数出错!\n");
return 0;
}
else
{
*x=l->list[i-1];
for(j=i/* 这里是要将第i个后面的一个数字向前移前,覆盖第i个元素*/;j<=l->length-1;j++)
l->list[j-1]=l->list[j];
l->length--;
return 1;
}
}
void print(sqlist *l)
{
int i;
for(i=0;i<=l->length-1;i++)
printf("%d",l->list[i]);
printf("\n");
}
求高手指教!感激不尽
[解决办法]
你的main函数里面mylist。length没有初始化,insert要依赖于length