Очередь узлов (связанный список) 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)
{
}