我有一个家庭作业,我需要建立自己的队列。我的上一个家庭作业涉及建立一个链表。
队列只不过是一个链表,只能添加到前面并从末尾删除吗?我可以复制并粘贴我的链表代码并删除除此之外的所有额外功能吗?
我已经查看了队列的文档,我看到了一些特定的功能,例如输出我也添加的队列的前/后,但是我之前通过制作链表几乎完成了任务吗?
从这里:
队列是一个FIFO(先进先出(列表,一个类似列表的结构, 提供对其元素的受限访问:元素只能是 插入背面并从正面取出。与堆栈类似, 队列不如列表灵活。
所以,是的,你(几乎(是对的。队列可以使用链表作为其基础数据容器。但是,请注意,队列也可以使用std::vector
(可能不是最好的主意(或完全不同的东西来存储其数据。无论如何,因为你已经有一个链表,这可能是一个不错的选择。
不要复制粘贴任何代码!重复的代码总是不好的。如果你想改变链表实现上的某些内容,你必须在两个地方做。由于队列限制了对其元素的访问,因此最简单的实现
方式可能是:class MyQueue {
MyLinkedList data;
public:
pop_front();
push_back();
// ...etc...
};
从我的数据结构类中,我记得队列是抽象数据类型(ADT(,这意味着它是结构应该做什么的描述,而链表是使用ADT规范的ADT实现。 在代码中,这两个术语有时可以互换使用,或者有时队列只是一个链表,您可以在其中从一端插入,并从另一端删除。
不同的是实现队列(它是一种抽象数据类型(,使用链表、数组、两个堆栈等。您的链表提供了拥有正确队列所需的许多功能,因此是的,您的队列实现将与链表的实现非常相似。请考虑遵循队列的一些常见命名约定,例如 enQueue(添加元素(、deQueue(删除元素(、isEmpty,或者找到对您有意义的其他命名约定。