-1
while(count != 25) {
    tail = head;
    new_node = (binary_node*)malloc(sizeof(binary_node));
    while(tail->next != NULL)
        tail = tail->next;
    tail->next = new_node;  
    new_node->element.frequency = (p->element.frequency + q->element.frequency);
    new_node->LSON = p;
    new_node->LSON->RTAG = 0;
    new_node->RSON = q;
    new_node->RSON->RTAG = 1;   
    head = new_node;
    n = n - 1;
    head = q->next;
    sort(n, head);


    p = head;
    q = p->next;
    count++;
}

上記のコードは、ハフマン ツリーを生成する必要があります。ただし、形成されるバイナリ ツリーは正しくありません。文字を含むすべてのノードはリーフまたは子のないノードである必要がありますが、一部のアルファベット ノードにはまだ子があります。コードの何が問題になっていますか?

4

1 に答える 1

1

mallocガベージでいっぱいのメモリ領域を返します。

new_node がアルファベット ノードではないことを決して設定していないため、実際にはアルファベット ノードであると言うガベージが見つかることがあります。

検証の結果: 最初に持っていたより多くのアルファベット ノードが見つかるはずです。

于 2011-08-07T17:46:14.250 に答える