C程序顺序表操作求帮助

C语言 码拜 9年前 (2016-04-12) 789次浏览
typedef int ElemType;
#define LIST_INIT_SIZE 200
typedef struct
{
ElemType *data;//本人的顺序表定义有错吗
int length;
int listsize;
}SqList;
void InitList_Sq(SqList *L)
{
L->data=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));//程序每次执行到这个地方都无法给L->data赋值,显示
//出C0000005:access violation提示,求指导
L->length=0;
L->listsize=LIST_INIT_SIZE;
}//顺序表初始化函数
int main()
{
int i,m,n;
while(scanf(“%d”,&m)!=EOF)
{
SqList *La,*Lb;
InitList_Sq(La);
InitList_Sq(Lb);
for(i=0;i<m;i++) ListInsert_Sq(La);
scanf(“%d”,&n);
for(i=0;i<n;i++) ListInsert_Sq(Lb);
Show_List(La);
Show_List(Lb);
Fun_Union(La,Lb);
printf(“\n”);
}
return 0;
}
有高手告诉本人怎么回事吗,调试半天了,很苦恼,不胜感激!
解决方案

80

原因是你没有给main函数里的La分配空间。
SqList *La这样写,La是指向一块未知区域的内存,然后执行InitList_Sq函数,
L->data=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));试图向未知区域写入值,自然就出现异常了。
改成这样:

SqList *La = (SqList *)malloc(sizeof(SqList ));

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C程序顺序表操作求帮助
喜欢 (0)
[1034331897@qq.com]
分享 (0)