gpt4 book ai didi

c - 段错误问题,无法检测

转载 作者:行者123 更新时间:2023-11-30 21:29:07 25 4
gpt4 key购买 nike

有人可以帮我解决这段代码吗?我遇到段错误。请帮我看看我哪里出错了。

#include <stdio.h>
#include <stdlib.h>

struct city
{
int x;
int pop;
struct city *next;
};
struct list
{
struct city *head;
};

void insert(struct list *list1,int a,int b)
{
struct city *node = (struct city *)malloc(sizeof(struct city));
node->x=a;
node->pop = b;
if(list1->head!=NULL)
{
node->next=list1->head;
}
list1->head=node;
}

void initialize_list(struct list *list1)
{
list1->head = NULL;
}

void display(struct list *list)
{
struct city *temp = list->head;
while(temp!=NULL)
{
printf("%d %d\n",temp->x,temp->pop);
temp=temp->next;
}
free(temp);
}
void getdata(int *x)
{
char s[1000];
char c;

scanf("%[^\n]%*s",s);

char *p=s;
int i =0;
while(*p!='\0')
{
while(*p==' ' && *p!='\0')
p++;
if(*p!='\0')
x[i] = atoi(p);
while(*p!=' ' && *p!='\0')
p++;
i++;
}
}
int max(int a,int b)
{
if(a>b)
return a;
else
return b;
}

int total(struct list *link)
{
struct city *r1,*r2;
r1=link->head;
r2 = r1;
int S=0;
while(r1!=NULL)
{
r2 = r1;
while(r2!=NULL)
{
S=S+max(r1->pop,r2->pop)*abs((r2->x)-(r1->x));
r2=r2->next;
}
r1=r1->next;

}
printf("\n%d",S);
free(r1);
free(r2);
return S;
}

int main()
{
int T;
int *x,*pop;
int _no_city;
char c;
scanf("%d",&T);

struct list **link = (struct list **)malloc(T*sizeof(struct list*));
for(int i=0;i<T;i++)
{
link[i]=(struct list *)malloc(sizeof(struct list));
}

for(int i =0;i<T;i++)
{
scanf("%d",&_no_city);

x = (int *)malloc(_no_city*sizeof(int));
pop = (int *)malloc(_no_city*sizeof(int));
while((c= getchar()) != '\n' && c != EOF)

fflush(stdin);
getdata(x);
getdata(pop);

initialize_list(link[i]);
for(int j=0;i<_no_city;j++)
{
insert(link[i],x[j],pop[j]);
}
free(x);
free(pop);
}

for(int i=0;i<T;i++)
{
printf("%d",total(link[i]));
}
}

问题在于我声明了一个指向指针的指针吗?我这样做是为了创建一个可变长度的指针数组。

最佳答案

你的程序中有很多错误,但是这个

for(int j=0;i<_no_city;j++)
{
insert(link[i],x[j],pop[j]);
}

将在xpop的末尾运行,因为你的循环条件是错误的,并且可能是导致崩溃的原因。

关于c - 段错误问题,无法检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34429038/

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