Huffman coding: Difference between revisions

Content added Content deleted
(wrote code using example described)
Line 2,951: Line 2,951:
int freq;
int freq;
}
}
-(id)initWithFreq:(int)f;
-(instancetype)initWithFreq:(int)f;
@property (nonatomic, readonly) int freq;
@property (nonatomic, readonly) int freq;
@end
@end
Line 2,957: Line 2,957:
@implementation HuffmanTree
@implementation HuffmanTree
@synthesize freq; // the frequency of this tree
@synthesize freq; // the frequency of this tree
-(id)initWithFreq:(int)f {
-(instancetype)initWithFreq:(int)f {
if (self = [super init]) {
if (self = [super init]) {
freq = f;
freq = f;
Line 2,988: Line 2,988:
}
}
@property (readonly) char value;
@property (readonly) char value;
-(id)initWithFreq:(int)f character:(char)c;
-(instancetype)initWithFreq:(int)f character:(char)c;
@end
@end


@implementation HuffmanLeaf
@implementation HuffmanLeaf
@synthesize value;
@synthesize value;
-(id)initWithFreq:(int)f character:(char)c {
-(instancetype)initWithFreq:(int)f character:(char)c {
if (self = [super initWithFreq:f]) {
if (self = [super initWithFreq:f]) {
value = c;
value = c;
Line 3,006: Line 3,006:
}
}
@property (readonly) HuffmanTree *left, *right;
@property (readonly) HuffmanTree *left, *right;
-(id)initWithLeft:(HuffmanTree *)l right:(HuffmanTree *)r;
-(instancetype)initWithLeft:(HuffmanTree *)l right:(HuffmanTree *)r;
@end
@end


@implementation HuffmanNode
@implementation HuffmanNode
@synthesize left, right;
@synthesize left, right;
-(id)initWithLeft:(HuffmanTree *)l right:(HuffmanTree *)r {
-(instancetype)initWithLeft:(HuffmanTree *)l right:(HuffmanTree *)r {
if (self = [super initWithFreq:l.freq+r.freq]) {
if (self = [super initWithFreq:l.freq+r.freq]) {
left = l;
left = l;