1

我正在尝试将节点存储在队列 (STL) 中,但出现错误。

首先,我想知道Node的结构是否正确。

真的,我想按整数的顺序(从小到大)存储节点,我听说过优先级队列,我尝试使用它,但是我遇到了一个很大的错误,所以我回到了队列。

然后我看到了一些关于节点的运算符重载的东西,但我不知道如何使用它。必须制作一个 Node.h 文件吗?

struct Node{
  int freq;
  char Char;
  struct Node *left;
  struct Node *right;
  Node(int freq, char Char){
  freq = freq;
  Char = Char;
 }
};

queue<Node*> list;
Node *a = new Node(2, '4');

list.push(a);

Node *e = list.pop();
cout << e->freq;

错误:

error: void value not ignored as it ought to be // Node *e = list.pop();
4

1 回答 1

3

popvoid函数。你需要front

list.pop();
Node *e = list.front();

下一个问题是构造函数:

Node(int freq, char Char){
  this->freq = freq; // <------- 'this->' is added to access to right variables
  this->Char = Char; // <-------
 }

我的建议是编写您的构造函数,如下所示:

Node(int freq, char Char) : freq(freq), Char(Char)
{
}
于 2013-03-26T10:35:28.083 回答