我的顺序表程序一运行就会弹出 顺序表.exe 已停止工作 求大侠帮忙看一下 到底问题出现在哪里? 感激不尽!
主函数是#definemaxsize100typedefintdatatype;#include<stdio.h>#include"hh.h"voidmain(){sql...
主函数是
#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");
}
大意思通过键盘使用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");
}
大意思通过键盘使用scanf语句输入自己想要输入的顺序表元素
本来是想输入五个元素 然后在第六个位置插入99
可惜一运行 输入一个5之后就显示 顺序表.exe 停止工作了 就注释掉了那句
哪位大侠可以帮忙看一下?谢谢! 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询