Witam próbuję stworzyć drzewo Huffmana,
stworzyłem liste jednokierunkową gdzie w pojedynczym elemencie przechowuję:
częstotliwość wystąpień znaków, znak, miejsce (korzeń) drzewek gdy juz zaczną być tworzone.
Budując drzewo pobieram 2 elementy usuwając je z listy
następnie dodaje element do listy z połączonych tych dwóch elementów (suma czestotliwosci) oraz zapisuje w miejscu korzenia gdzie znajduje sie to podrzewko, żeby nie stracić połączenia drzewa.
void addNodes()
{
if (head->root == NULL) // gdy jest lisciem tworz node1,node2 z l,r nullami
{
struct tree *node1 = (struct tree *)malloc(sizeof(struct tree));
node1->left = NULL;
node1->right = NULL;
node1->freq = head->freq;
node1->sign = head->sign;
deleteLista(); // usuwa z glowy 1 element ;
struct tree *node2 = (struct tree *)malloc(sizeof(struct tree));
node2->left = NULL;
node2->right = NULL;
node2->freq = head->freq;
node2->sign = head->sign;
deleteLista();
struct tree *node = (struct tree *)malloc(sizeof(struct tree));
node->left = node1;
node->right = node2;
node->freq = node1->freq + node2->freq;
addFirst(node->freq); // dodaje nowa glowe;
head->root=node;
}
else {
}
}
Program leci w nieskończoność gdy próbuję dodać te 3 węzły.