一个关于顺序表的问题,程序代码如下:

来源:百度知道 编辑:UC知道 时间:2024/06/23 02:03:34
#include<stdio.h>
#include<stdlib.h>
#define max 100
struct list
{
int n;
int elem[max];
};
void createlist() /*创建一个空表*/
{
list *slist=(list*)malloc(sizeof(struct list));
if(slist!=NULL)
slist->n=0;
else
printf("error");
}
void insert(list *slist,int x,int p) /*在下标为X的数前面插入一个数P*/
{
int q;
if(slist->n==max)
printf("overflow\n");
if(p<0||p>slist->n)
printf("Index out of range!\n");
for(q=slist->n-1;q>=x;q--) /*x面的数后移*/
slist->elem[q+1]=slist->elem[q];
slist->elem[x]=p;
slist->n++;
}
void del(list *slist,int x) /*删除下标为X的数*/
{ int q;
if(x<0||x>=slist->n)
printf("x bu he fa!\n");
for(q=slist->n-1;q>x;q--)
slist->elem[q-1]=slist->elem[q];
slist->n--;

出现这样的错误一般都是scanf的变量没有写&符号,只有变量是数组的才不用&,但是数组元素的必须用&,比如你下面这个语句就错误了:
scanf("%d",slist->elem[i]);

因为slist->elem[i]是个整数类型变量,应该修改为:

scanf("%d",&slist->elem[i]);

补充:有两个地方哦。你在开发环境里面单步执行,看在哪一个语句出现错误。