gpt4 book ai didi

c - 双链表的问题

转载 作者:行者123 更新时间:2023-11-30 14:28:29 26 4
gpt4 key购买 nike

所以我得到了这个任务来制作一个程序,该程序将允许用户在双链表中输入多个整数元素,并且我必须删除那些可以除以它们的总和的元素(余数为0)数字。

#include <stdio.h>
#include <stdlib.h>
#define NEW(t) (t*)malloc(sizeof(t))

typedef int info_t;

typedef struct element {
info_t info;
struct element *next;
struct element *prev;
} node;

typedef node* nodep;
void insert(nodep l, info_t x) {
nodep t = NEW(node);
t->info=x;
t->next=l->next;
l->next=t;
t->prev=l;
}
void printList(nodep l) {
nodep t=l->next;
while(t!=l)
{
printf("->%d", t->info);
t=t->next;
}
printf("\n");
}
void deletedividable(nodep l) {
nodep t=l->next;
nodep temp;
while(t->next!=l)
{
int temporary=t->info;
int sum=0;
while(temporary>0)
{
sum+=(temporary%10);
temporary/=10;
}
if(!(t->info%sum))
{
temp=t->next;
t->next->prev=t->prev;
t->prev->next=t->next;
free(t);
t=temp;
}
else
t=t->next;
}
}

int main() {
// declaring a leader node
nodep list = NEW(node);
list->next = list;
list->prev = list;

printf("Enter elements:\n ");
int a;
//if the input isn't a number the loop will exit
while(scanf("%d", &a)) {
//elements input function call
insert(list, a);
}
// print list function call
printList(list);
// delete elements which are dividable with the sum of their digits

deletedividable(list);

printList(list);

return 0;
}

问题是,在deletedividable(list)之后;函数调用,调用第二个打印列表时没有打印任何内容,我似乎无法找到问题所在,某些指针一定被搞砸了,但我不确定是哪些指针。任何帮助将不胜感激。

最佳答案

您的 insert() 函数中似乎存在错误。提示:插入循环双链表应设置或更改4个指针;您只设置了 3 个。

关于c - 双链表的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5970909/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com