Cтруктура node имеет в своих полях указатели на node
struct node {
node() {};
frequency data;
node *left;
node *right;
};
В программе после того, как я добавляю один экземпляр переменной типа node, ее правый узел ссылается сам на себя (хранит те же данные, что и сама переменная)
while (nodes.size() > 2) { // формирование дерева
node *n1 = new node; // извлекаемые узлы
node *n2 = new node;
n1 = &nodes[nodes.size() - 1];
n2 = &nodes[nodes.size() - 2];
nodes.pop_back();
nodes.pop_back();
node n; // новый узел, соединяющий два извлеченных узла с их суммарной частотой
n.data.c.second = n1->data.c.second + n2->data.c.second;
n.left = n1;
n.right = n2;
nodes.push_back (n); // после этой операции n.right копирует n
int i = nodes.size() - 1;
while (i > 1 && nodes[i].data.c.second > nodes[i - 1].data.c.second)
swap (nodes[i], nodes[i - 1]);
}
Почему так происходит?
Похоже, что вы используете n1, n2
, которые только что удалили через pop_back()
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
У меня есть скомпилированный из ассемблераobj файл с функцией
Реально ли сделать выход из цикла без команды ввода? Допустим идет бесконечный цикл и в любой момент я нажимаю ENTER и цикл прекращаетсяЕсли...
Ребят, не подскажете, как сделать вывод из цикла итогового значения i,k,j? Пробовал через присваивания другим переменным, но они остаются локальными...