next up previous
    Next: Data Up: Huffman Code Previous: Huffman Code

    LDL++ Source Code

    export h_code(R, C).
    
    h_tree(0, X, nil, nil, C, 0) <- freq(X,C).
    
    least(I+1, least<(R, C)>) <- h_tree(I, R, _, _, C, _).
    
    single(least, (R,C), (R,C)).
    multi(least, (R,C), (R_old, C_old), (R, C))<-C<C_old.
    multi(least, (R,C), (R_old, C_old), (R_old, C_old))<-C>=C_old.
    
    h_tree(I+1, R, S1, S2, C, 1-Odd) <- h_tree(I, R, S1, S2, C, Odd), ~least(I+1,(R,C)).
    h_tree(I+1, R, S1, S2, C, 0) <-     
        h_tree(I, _, _, _, _, 1),
        least(I, (S1, C1)),     
        least(I+1, (S2, C2)), 
        C=C1+C2,    
        R=(S1,S2).
    
    h_code(R,C)<-h_tree(_,R,_,_,C,_).
    


    Haixun Wang
    4/22/1998