gpt4 book ai didi

c - 如何向队列中添加元素

转载 作者:太空宇宙 更新时间:2023-11-04 04:26:16 25 4
gpt4 key购买 nike

我真的不明白我的代码有什么问题。

当我添加第一个元素时一切正常,但在那之后,它就不起作用了。当 ptr 为 NULL 时,它进入 while 循环。检查是否为空有问题吗?

struct Car
{
int startTime;
char *model;
char *code;
char *location;
struct Car *next;
int deptEnterTime;
bool waitingForFraming;
bool waitingForPainting;
bool waitingForPolishing;
bool waitingForEngine;
bool waitingForElectronic;
bool waitingForIndoor;
bool waitingForTest;
};

struct Car *head = NULL;
void insert(int startTime, char *model, char *code)
{
/*create a link*/
struct Car *link = (struct Car*) malloc(sizeof(struct Car));

link->startTime= startTime;
link->model = model;
link->code = code;
link->waitingForFraming=true;
link->waitingForPainting=false;
link->waitingForPolishing=false;
link->waitingForEngine=false;
link->waitingForElectronic=false;
link->waitingForIndoor=false;
link->waitingForTest=false;

if(head == NULL)
{
head = link;
}
else
{
struct Car *ptr;
ptr = head->next;

while(ptr != NULL)
{
ptr = ptr->next;
}
ptr = link;

}
}

最佳答案

对于初学者,您必须为添加的元素将数据成员 next 设置为 NULL。

struct Car *link = (struct Car*) malloc(sizeof(struct Car));

link->next = NULL;
//...

这部分函数也是错误的

else
{
struct Car *ptr;
ptr = head->next;

while(ptr != NULL)
{
ptr = ptr->next;
}
ptr = link;

}

应该这样写

else
{
struct Car *ptr = head;

while( ptr->next != NULL)
{
ptr = ptr->next;
}
ptr->next = link;

}

请注意,如果您要将元素添加到列表的末尾,那么您应该至少声明一个双向列表。否则将元素添加到列表的末尾是低效的。

关于c - 如何向队列中添加元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41086465/

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