关于线性表的一道题~

来源:百度知道 编辑:UC知道 时间:2024/05/20 12:11:52
//实现顺序表的插入运算

#include "stdio.h"
#define null 0
typedef int datatype;
#define maxsize 1024
typedef struct
{
datatype data[maxsize];
int last;
}sequenlist;

int insert(sequenlist *L,datatype x,int i)
{
int j;
if ((*L).last==maxsize-1)
{
printf("overflow");
return null;
}
else
if((i<1)||(i>(*L).last+1))
{
printf("error");
return null;
}
else
{
for(j=(*L).last-1;j>=i-1;j--)
(*L).data[j]=(*L).data[j+1];
(*L).data[i-1]=x;
(*L).last=(*L).last+1;
return 1;
}

}

void creatlist(sequenlist *L)
{
int n,i;
printf("请输入N个数据:\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("data[%d]=",i);
scanf

先说几个明显的错误吧.
void creatlist(sequenlist *L);
create(*L);
上面是函数原型,要接收地址,
而你下面写出*L明显不对,L就是地址.
*L是对他解引用,这里也没有什么实际意义,就算真用.
也是要用(*L).结构体内容,这样.你这块,真接传L就可以了.类似的把主函数里传的*L,全改成L,这时应该编译不报错了.但是,你的程序运行的时候.还是内存有问题.参照以上.及自己掌握的知识,试着调试一下.

#include "stdio.h"
#define null 0
typedef int datatype;
#define maxsize 1024
typedef struct
{
datatype data[maxsize];
int last;
}sequenlist;

int insert(sequenlist *L,datatype x,int i)
{
int j;
if ((*L).last==maxsize-1)
{
printf("overflow");
return null;
}
else
if((i<1)||(i>(*L).last+1))
{
printf("error");
return null;
}
else
{
for(j=(*L).last-1;j>=i-1;j--)
(*L).data[j]=(*L).data[j+1];
(*L).data[i-1]=x;
(*L).last=(*L).last+1;
return 1;
}

}

vo