c语言 数据结构程序运行时出现了问题 麻烦哪位大侠帮看一下

 我来答
xoaxa
2015-05-23 · TA获得超过8613个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3635万
展开全部

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);
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式