队列模拟的数组与双链表

Arrays vs. Doubly Linked Lists for Queue simulation

本文关键字:链表 数组 模拟 队列      更新时间:2023-10-16

我正在为学校做一项作业,模拟学生排队,并在注册办公室打开多个窗口。

我为学生排了队,但有人建议我为实现我们自己制作的队列类的窗口使用数组
我不明白为什么数组会起作用,因为除了学生时间递减之外,我还想了解每个窗口的其他变量。

我只是在寻找一些方向或更深入的解释,如何使用数组来存储每个学生在窗口的时间,而不是另一个双链表?

在我看来,你有可变数量的学生和固定数量的窗户(建筑通常不会经常变化)。如果我在代码中对此进行表示,我会使用一个动态大小的容器(列表、向量、队列等)来包含所有学生,并为寄存器使用一个固定大小的数组。这将体现代码中真实情况的意图,使其他使用您代码的人不太可能犯与注册办公室规模有关的任何错误。通常情况下,选择容器类型完全取决于其预期用途!

因此,您可以设计一个类来使用一个固定大小的数组来容纳所有寄存器(或者更好的:一个模板指定的大小,就像您使用C++一样)。然后,您可以使用给定的大小参数编写所有其他与Registrar相关的函数,从而在Registrary数组中永远不会越界。

最后:数组包含您希望它包含的任何信息。你可以让它只容纳数字(比如int),但你也可以让它容纳任何类型的对象!我的意思是:创建一个Registor类,该类包含您想为每个Registor收集的所有信息。然后创建一个包含Registrar对象的数组。然后,无论何时访问数组中的单个元素,都可以通过该引用访问单个注册器的所有信息。