gpt4 book ai didi

c - C中的一个函数,将 `push`个项目放到一个队列中

转载 作者:行者123 更新时间:2023-12-01 13:46:29 25 4
gpt4 key购买 nike

用C写了一个push(Queue **, Nod *)方法。想要检查我在将 nods 插入 queue 时是否涵盖了基础知识。

void push_back(Queue ** q, Process * p){
p->next = NULL;
if( (*q)->head == NULL && (*q)->tail ==NULL){
(*q)->head = (*q)->tail = p;
}
(*q)->tail->next = p->next;
(*q)->tail = p;
}

我是否通过正确分配 p->nextNULL 分配给 (*q)->tail->next

最佳答案

(*q)->tail->next 应该已经是 NULL

如果队列不为空,那么您就没有正确链接到新节点。相反,如果队列不为空,则应使 (*q)->tail->next 指向 p,然后使 tail 指向 p:

if (/* queue is empty */)
{
...
}
else
{
(*q)->tail->next = p;
(*q)->tail = p;
}

正如我在评论中所说,您似乎不需要通过将指针传递给指针来创建额外的间接寻址,这意味着您可以(根据我的更改)将其重写为

void push_back(Queue * q, Process * p){
p->next = NULL;
if( q->head == NULL && q->tail ==NULL){
q->head = q->tail = p;
} else {
q->tail->next = p;
q->tail = p;
}
}

关于c - C中的一个函数,将 `push`个项目放到一个队列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35650478/

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