1

ノードをキュー(STL)に保存しようとしていますが、エラーが発生します。

まず、ノードの構造体が正しいかどうかを知りたいです。

本当に、ノードを整数(小から大)の順に格納したいのですが、優先キューのことを聞いて使ってみましたが、大きなエラーが出てキューに戻りました。

次に、ノードの演算子のオーバーロードについて何かを見ましたが、それを使用する方法を実際に取得していません。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 に答える