gpt4 book ai didi

c - 这段代码中段错误的原因

转载 作者:行者123 更新时间:2023-11-30 21:45:04 24 4
gpt4 key购买 nike

问题:写一个函数Duplicates()它接受一个包含整数的列表,并在从列表中删除所有重复条目后返回该列表。

由此给出列表20, 25, 25, 30, 40, 45, 45, 45, 60 ,它应该返回 20, 25, 30, 40, 45, 60 。 * 尝试了这段代码,它给出了段错误。*

#include <stdio.h>

typedef struct node{
int d;
struct node* next;
}node;

typedef node* list;

void printList(list a)
{
while(a!=NULL)
{
printf(" %d",a->d);
a=a->next;
}
}

int main()
{
int i,flag,n,v;
list head,tail,new,a,taila,b,c;
scanf("%d",&n);
scanf("%d",&v);
tail=head=NULL;
head=(list)malloc(sizeof(node));
head->d=v;
head->next=NULL;
tail=head;
for(i=2;i<=n;i++)
{
scanf("%d",&v);
new=(list)malloc(sizeof(node));
new->d=v;
new->next=NULL;
tail->next=new;
tail=new;
}
printf("Before working \n");
printList(head);
printf("After working \n");
a=(list)malloc(sizeof(node));
taila=NULL;
a->d=head->d;
a->next=NULL;
taila->next=a;
taila=a;
b=head;
for(i=2;i<=n;i++)
{
c=head;
while(c!=b)
{
if(c->d==b->d)
flag++;
c=c->next;
}
if(flag==0)
{
new=(list)malloc(sizeof(node));
new->d=b->d;
new->next=NULL;
taila->next=new;
taila=new;
}

b=b->next;
}
printList(a);


return 1;
}

最佳答案

就我所理解的逻辑而言,您需要消除一些缺陷,然后您的逻辑才能发挥作用。试试这个: for(i=1;i<=n;i++) { 标志=0; c=头; 而(c!= b) { 如果(c->d==b->d) 标志++; c=c->下一个; } if(标志==0 && i==1) { a=(列表)malloc(sizeof(节点)); a->d=b->d; a->下一个=NULL; 塔拉=a; } 否则如果(标志==0) { new=(列表)malloc(sizeof(节点)); 新->d=b->d; 新->下一个=NULL; 尾拉->下一个=新; 泰拉=新的; }

        b=b->next;
}

关于c - 这段代码中段错误的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24642657/

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