我收到了一份问题陈述,问题陈述是假设你正在为餐馆建立一个应用客户订单的应用程序。
您的应用需要存储订单列表。服务器不断添加 订单到此列表,厨师从列表中取出订单并制作它们。 这是一个订单队列:服务器将订单添加到队列的后面, 厨师从队列中取出第一个订单并做饭。 您是否会使用数组或链表来实现此队列。
我已经偿还了链表。发生了大量插入(服务器 添加订单),链接列表excel。你不需要搜索 或随机访问(什么阵列擅长),因为厨师总是 从队列中取出第一个订单。
现在请指教我的回答是正确的,我也在想,当服务器同时将十个项目排在队列中时会发生这种情况,但另一方面,厨师决定首先选择项目,这将花费更少的时间来准备在这种情况下,哪种数据结构最好
答案 0 :(得分:0)
是的,链接列表应该是最佳选择。
这通常是因为您不仅尝试从一端插入,而且还尝试从另一端删除元素。
现在在这个链接列表中,你将有一个头部和一个尾部,为此您将始终保持其指针可用(因为您需要从尾部移除元素并在头顶添加元素)
随着订单被添加到头部,头部不断更新:这里没问题。
对于Chef删除一个订单的部分:您必须从列表中删除项目,并将尾部指针指向第二个最后一个对象,该对象现在是列表中的最后一个对象。
我能想到实现这一点的唯一方法是使用双向链表,每次从队列中删除(或弹出)元素时尾部都会更新(对不起,链接列表)。
我想我是如何使用双向链表来教我如何实现队列的。
您可以参考inslemtation here。
修改强>
您也可以使用单链表进行操作。步骤是:
答案 1 :(得分:0)
基于链接列表的队列将是上述问题的最佳选择。在链接列表队列中,您可以使用O(1)操作进行插入(按服务器下订单)和删除(由厨师接受订单)。你也有动态内存分配(内存只在需要时才用完)。
我参与了一个类似的项目,在那里我们习惯了类似的订单,这是厨师在现实世界中通常做的事情。例如:来自服务器1的2个炸薯条和来自server2的3个炸薯条将成为总共5个炸薯条。
当您想要实现一个基于考虑项目准备时间的随机访问的场景时,我仍然认为链表队列会更有用。