问题:
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;
}
};