gpt4 book ai didi

c - 双指针队列,deQueue,enQueue

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

目前正在准备考试,无法弄清楚示例代码中 queue[rear*] = new_node 背后的原因。

你不是把 new_node 的地址而不是值放进去吗?

还有,这个队列是不是Node**队列,因为它是一个指向节点指针列表的指针?

非常感谢,我真的很感激,无论我花了多少时间在双指针上,它们总是突然出现并重新测试我的理解,我以为我终于有了!

void enQueue(struct node **queue, int *rear, struct node *new_node) 
{
queue[*rear] = new_node;
(*rear)++;
}

struct node *deQueue(struct node **queue, int *front)
{
(*front)++;
return queue[*front - 1];
}

最佳答案

这里的 queue 是指向 struct Node pointers 数组的指针。

数组中的每个 node 指针都将指向 NewNodes。

              node 1              node2
^ ^
| .... |
+--------+---------+--------+
queue -->| node * | node * |node * |
+--------+---------+--------+

当你做的时候

       queue[*rear] = new_node; 

您将 queue 数组中 *rear 位置的 node * 分配给 NewNode

我能想到的维护 Node * 数组的唯一原因是避免复制 NewNode 的内容。

关于c - 双指针队列,deQueue,enQueue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53515608/

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