
c语言 数据结构程序运行时出现了问题 麻烦哪位大侠帮看一下
1个回答
展开全部
1、void initlist(sqlist *L)有问题。这个L是initlist()的局部指针变量,为其分配的存储空间无法通过这个指针返回给主调函数,原因是,作为指针形参,只能改变其指向的“值”,而无法改变指针的指向。修改方法是,利用函数initlist()申请动态空间,并将该动态空间的首地址返回给主调函数。
sqlist *init() {
sqlist *L = (sqlist *)malloc(sizeof(sqlist));
L->data = (char *)malloc(maxsize);
L->length = 0;
return L;
}
//主调函数调用该函数的方法
sqlist L = initlist();
2、listdelete()函数有问题。删除第i个元素时,只需将这个元素覆盖即可。
int listdelete(sqlist *L,int i) { // 无需char e参数
int j;
if(i < 1 || i > L->length) return false;
--i;
for(j = i; j < L->length - 1; ++j)
L->data[j] = l->data[j + 1];
--L->length;
return true;
}
3、void destorylist(sqlist *L)函数有问题。应该先释放data,然后在释放L
void destorylist(sqlist *L) {
free(L->data);
free(L);
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询