删除单个链表中的元素退出代码11

问题描述

我是编码的新手,这实际上是我的第一个程序。 这是我的大学老师的要求,他希望我们创建一个函数,该函数将列表的第一个元素添加到前面的步骤中,然后删除这两个元素,然后将总和插入列表中,依此类推,等等。接下来的内容。 他给我们的例子是{3,2,1,4,6,7,5}步骤= 2-> {5,5,12} 我在删除前面的步进位置中的元素时遇到问题,我很确定这是由于指针问题造成的。接下来,我将展示该功能和删除功能:

        void delete(struct list_org ** ptrptr,int value){
    struct list_org * p,*q;
    p=q=*ptrptr;

    if((*ptrptr)->value == value){
        *ptrptr = (*ptrptr)->next_ptr;
        free(p);
        return;
    } else{
        while(p->next_ptr != NULL){
            if(p->value== value){
                q->next_ptr = p->next_ptr;
                free(p);
            } else{
                q = p;
                p = p->next_ptr;
            }
        }
    }
}

void sum_step(struct list_org ** ptrptr,int step) {
    int num,step_num,sum,i;
    struct list_org * first = *ptrptr;
    struct list_org * step_ptr = ptrptr;

    while(first != NULL) {
        num = (first)->value;

        for (i = 1; i < step; i++,step_ptr = step_ptr)
            step_ptr = (*ptrptr)->next_ptr;

        if (step_ptr == NULL) {
            step_num = 0;
        } else
            step_num = step_ptr->value;

        sum = num + step_num;
        printf("\nThe sum between ( %d ) and ( %d ) is ( %d )\n",num,sum);
        suf_insert(ptrptr,sum);
        delete(ptrptr,first->value);
        delete(ptrptr,step_ptr->value);
        first = first->next_ptr;
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)