如何解决删除单个链表中的元素退出代码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 举报,一经查实,本站将立刻删除。