带有链表的C++队列



问题:

struct QueueNode {
int data;
QueueNode *next;
};

进行

  • int size((const:返回数据大小
  • 布尔is_empty((常量:
  • void enqueue(int val(:在列表末尾添加一个新节点
  • void dequeue((:移除头指向的节点
  • int top((const:返回下一个出列的数据

这是我的代码

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;
}
};

在线法官显示了错误的答案。我认为";int top((常量"是错误的。但我不知道。寻求帮助。谢谢

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

这可能会起作用:

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

编辑:同样,你也应该从top()返回一些东西。如果你使用的是在线法官,那么它会指定在出现空队列的情况下返回什么。请再读一遍约束条件,我想这会有所帮助。它很可能是某个异常或某个默认整数,这是在线法官判断空队列输出所需要的。

我的答案。谢谢大家。

class Queue {
private:
QueueNode *_head = NULL, *_tail = NULL;
int _size = 0;
public:
int size() const {
if (! is_empty())
return _size;
else
return 0;
}
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 = _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;
}
};

相关内容

  • 没有找到相关文章

最新更新