当前位置: 首页 > 知识库问答 >
问题:

C++链表队列

田博超
2023-03-14
struct QueueNode {
    int data;
    QueueNode *next;
};
    null
class Queue {
    private:
        QueueNode *_head = NULL, *_tail = NULL;
        int _size = 0;
    public:
        int size() const {
            if (! is_empty())
              return _size;
        }
        bool is_empty() const {
            if (_size == 0)
                return true;
            else
                return false;
        }
        void enqueue(int val) {
            QueueNode *n = new QueueNode;
            n -> data = val;
            n -> next = NULL;
            if (is_empty()) {
                _head = n;
                _tail = n;
                _size ++;
            }
            else {
                _tail -> next = n;
                _tail = n;
                _size ++;
            }
        }
        void dequeue() {
            QueueNode *temp;
            temp = _head;
            if (! is_empty()) {
                _head = _head -> next;
                delete temp;
                _size --;
            }
        }
        int top() const {
            if (! is_empty())
                return _head -> data;
        }
};

共有1个答案

勾俊
2023-03-14

正如@Kaylum指出的,如果队列为空,则没有返回队列的大小。在这种情况下,它应该返回0,但是size()方法中没有其他部分。

这可能会奏效:

int size() const {
            if (! is_empty())
              return _size;
            else
              return 0;
        }

Edit:类似地,您也应该从top()返回一些内容。如果您使用的是在线判断器,那么它将指定在空队列的情况下返回什么。请再读一遍约束条件,我想这会有所帮助。它很可能是某个异常或某个默认整数,这是在线判断器判断空队列输出所需的。

 类似资料:
  • 我有一个链表类,这样实现(也进行了测试): 然后,我创建了一个队列类: 但是我不能在main上使用它,任何入队的尝试都会导致for循环崩溃,返回错误代码-1073741819。函数工作并显示。 输出: 我尝试为队列类编写一个构造函数来初始化LList类,但找不到正确的方法。如果我编写一个main函数只测试LList类,我就不需要初始化了,因为它的构造器已经在继续这个工作了。

  • 本文向大家介绍C#通过链表实现队列的方法,包括了C#通过链表实现队列的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#通过链表实现队列的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的C#程序设计有所帮助。

  • 对于使用c实现的链表队列,我的入队列和出队列有点问题。我的老师说模板是禁止使用的,我不能改变他给我们的公共和私人功能。我总是遇到一个分割错误。我真的不明白我做错了什么。我还包括了header、enqueue和dequeue函数。

  • 我很难理解linkedlist队列的enqueue方法的代码。我理解dequeue()、isEmpty()、First()和size()。首先,这里有一个LinearNode类来创建新的节点对象: 下面是Enqueue方法 在此编辑包含Enqueue方法的LinkQueue类:

  • 我得到了这些结构声明,以便实现使用循环链表的队列集合。 我试图创建一个函数,它将以指定的值排队(将其追加到队列的后面),我需要考虑队列为空和队列有一个或多个元素的两种情况。这是我到目前为止的代码: 这段代码给了我一个运行时错误,所以我不确定出了什么问题。在代码中,我假设队列-

  • 我使用的参考资料如下: 出于效率考虑,我们选择队列的前面位于列表的开头,队列的后面位于列表的末尾。这样,我们从头部移除,并在尾部插入。 我想知道为什么在头部插入并在尾巴上移除会不好?这是因为在单链表中,删除尾节点并不容易,因为您必须访问之前的节点,而在单链表中执行此操作的唯一方法是从头开始?

  • 我有一个通用的链表,其中保存的数据类型为空*我试图填充我的列表与结构雇员类型,最终我想破坏对象结构雇员以及。 考虑这个通用的链接列表头文件(我已经用char*类型测试过了): 考虑员工结构 现在考虑从main()调用的示例测试用例: 为什么我在下面发布的答案解决了我的问题?我相信这与指针和内存分配有关。我使用的函数Malloc()是一个自定义Malloc,用于检查是否返回NULL。 下面是我的整个

  • 嘿,伙计们,我在让for循环工作时遇到了一些麻烦。myList是一个链表,其中填充了文件中的数字,我正在尝试遍历它并以一种(当前,下一个)的方式打印当前值和每个下一个值- 出于某种原因,for循环无法执行任何操作,或者更确切地说,代码在for循环的开始就中断了。如果我摆脱for循环并只是复制和粘贴 很多时候它会按照我的意愿工作,但我宁愿不这样做。for 循环语法看起来是正确的,如果 say cou