Documente Academic
Documente Profesional
Documente Cultură
#include<iostream>
#include<conio.h>
#include<stdio.h>
int freq;
char letter;
node *left,*right,*parent;
node()
{
freq=0;
letter='-';
left=NULL;
right=NULL;
parent=NULL;
node *arr[max];
int arr1[10],arr2[10],arr3[10];
int heapsize,arr_len,count;
huffman()
{
heapsize=0;
arr_len=0;
count=0;
}
void set_array();
void get_array();
void get_count();
void min_heapify(int i);
void buildheap();
node* extractmin();
int parent(int i);
int left(int i);
int right(int i);
void min_heap_insert(node*);
void minheapdecreasekey(int,node*);
void maketree();
leaf_1->parent=child;
leaf_2->parent=child;
cout<<"\n\n"<<child->left->freq<<" : "<<child->left->letter;
cout<<"\n\n"<<child->right->freq<<" : "<<child->right->letter;
arr2[j]=child->left->freq;
arr3[j]=child->right->freq;
j++;
cout<<"\n\n"<<child->freq<<" : "<<child->letter;
min_heap_insert(child);
cout<<"\nArray after min heap insert";
for(int i=1;i<=heapsize;i++)
cout<<"\n"<<arr[i]->freq<<" "<<arr[i]->letter;
if(heapsize==1)
{
for(int k=(arr_len-1);k>=1;k--)
{ if(k==(arr_len-1))
cout<<"\n"<<arr1[k];
cout<<" "<<"\n0 : "<<arr2[k]<<"\n1 : "<<arr3[k];
}
}
}
void main()
{
clrscr();
int select;
do
{
cout<<"\n\nMENU";
cout<<"\n1.ENTER CHARACTERS WITH FREQUENCIES";
cout<<"\n2.DISPLAY";
cout<<"\n3.MAKE HUFFMAN TREE";
cout<<"\n4.EXIT";
cout<<"\nENTER YOUR CHOICE : ";
cin>>select;
switch(select)
{
case 1:obj.set_array();
break;
case 2:obj.get_array();
break;
case 3:while(obj.heapsize!=1)
obj.maketree();
obj.get_count();
break;
case 4:break;
}
}while(select!=4);
getch();
}