void printAliases() { if (size == 0) { return; } Node *n = head; while (n != NULL) { printNodeValues(n); n = n->next; } }
void printNodeAt(int nodeNumber) { if (head == NULL) { return; } int i; Node * n = head; for (i = 0; i < nodeNumber; i++) { n = n->next; } printNodeValues(n); }
Node * buildHuffmanTree(Node *nodes[]) { int i; for(i=0; i<LETTERS_COUNT-1; i++) { int indexOfSmallest = findSmallest(nodes, -1); int indexOfSecondSmallest = findSmallest(nodes, indexOfSmallest); printf("smallest: %d\n", indexOfSmallest); printf("second smallest: %d\n", indexOfSecondSmallest); Node *smallest = nodes[indexOfSmallest]; Node *secondSmallest = nodes[indexOfSecondSmallest]; // merge nodes Node *tree = malloc(sizeof(Node)); tree->value = smallest->value + secondSmallest->value; tree->letterIndex = 127; tree->left = smallest; tree->right = secondSmallest; nodes[indexOfSmallest] = tree; secondSmallest->value = -1; printNodeValues(nodes); } Node * tree; for(i=0; i<LETTERS_COUNT-1; i++) { if(nodes[i]->value >= 0) { tree = nodes[i]; break; } } return tree; }