Очередь узлов (связанный список) C++

Я пытаюсь сохранить узлы в очереди (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();

1 ответ

Решение

pop является void функция. Тебе нужно 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)
{
}
Другие вопросы по тегам