eas_m66
پنج شنبه 25 بهمن 1386, 19:55 عصر
سلام
من برنامه maxheap رو نوشتم ولی مشکل داره.کدش رو میزارم اگه کسی تونست کمک کنه ممنون می شم.
کد:
#include<iostream.h>
#include<conio.h>
void swap(int x,int y){
int t;
t=x;
x=y;
y=t;
}
class Heap
{
public:
Heap(); //constructor
void Make_Heap();
void Make_MaxHeap();
void Max_Heapfy(int);
void Insert(int);
void Remove(int);
void Print();
private:
int table[100];
int Heap_size;
};
Heap::Heap()
{
cout<<"Please Enter The Number of nodes:";
cin>>Heap_size;
cout<<"please enter The value of node:";
for(int i=1;i<=Heap_size;i++)
cin>>table[i];
Make_MaxHeap();
}
//********************************
void Heap::Make_MaxHeap()
{
for(int i=Heap_size/2;i>0;i--)
Max_Heapfy(i);
}
//*********************************
void Heap::Max_Heapfy(int i)
{
int L=2*i;
int R=2*i+1;
int largest=i;
if(R<=Heap_size&&table[i]<table[R])
largest=R;
if(L<=Heap_size&&table[largest]<table[L])
largest=L;
if(largest!=i)
{
swap(table[i],table[largest]);
Max_Heapfy(largest);
}
}
//**********************************
void Heap::Insert(int num)
{
Heap_size++;
table[Heap_size]=num;
for(int i=Heap_size/2;i>0;i--)
Max_Heapfy(i);
}
//**********************************
void Heap::Remove(int num)
{
int i,index;
if(Heap_size>0)
{
for(i=1;i<=Heap_size;i++)
if(table[i]==num)
{
index=i;
break;
}
if(index!=Heap_size)
{
swap(table[index],table[Heap_size]);
Heap_size--;
for(i=Heap_size/2;i>0;i--)
Max_Heapfy(i);
}
}
}
//*********************************
void Heap::Print()
{
for(int i=1;i<=Heap_size;i++)
cout<<table[i]<<' ';
}
//*********************************
int main()
{
Heap H;
int n,i;
H.Make_MaxHeap();
H.Print();
cout<<"\n Enter A New Number:";
cin>>n;
H.Insert(n);
H.Print();
cout<<"Enter A number to remove it frome Heap:";
cin>>n;
H.Remove(n);
H.Print();
}
من برنامه maxheap رو نوشتم ولی مشکل داره.کدش رو میزارم اگه کسی تونست کمک کنه ممنون می شم.
کد:
#include<iostream.h>
#include<conio.h>
void swap(int x,int y){
int t;
t=x;
x=y;
y=t;
}
class Heap
{
public:
Heap(); //constructor
void Make_Heap();
void Make_MaxHeap();
void Max_Heapfy(int);
void Insert(int);
void Remove(int);
void Print();
private:
int table[100];
int Heap_size;
};
Heap::Heap()
{
cout<<"Please Enter The Number of nodes:";
cin>>Heap_size;
cout<<"please enter The value of node:";
for(int i=1;i<=Heap_size;i++)
cin>>table[i];
Make_MaxHeap();
}
//********************************
void Heap::Make_MaxHeap()
{
for(int i=Heap_size/2;i>0;i--)
Max_Heapfy(i);
}
//*********************************
void Heap::Max_Heapfy(int i)
{
int L=2*i;
int R=2*i+1;
int largest=i;
if(R<=Heap_size&&table[i]<table[R])
largest=R;
if(L<=Heap_size&&table[largest]<table[L])
largest=L;
if(largest!=i)
{
swap(table[i],table[largest]);
Max_Heapfy(largest);
}
}
//**********************************
void Heap::Insert(int num)
{
Heap_size++;
table[Heap_size]=num;
for(int i=Heap_size/2;i>0;i--)
Max_Heapfy(i);
}
//**********************************
void Heap::Remove(int num)
{
int i,index;
if(Heap_size>0)
{
for(i=1;i<=Heap_size;i++)
if(table[i]==num)
{
index=i;
break;
}
if(index!=Heap_size)
{
swap(table[index],table[Heap_size]);
Heap_size--;
for(i=Heap_size/2;i>0;i--)
Max_Heapfy(i);
}
}
}
//*********************************
void Heap::Print()
{
for(int i=1;i<=Heap_size;i++)
cout<<table[i]<<' ';
}
//*********************************
int main()
{
Heap H;
int n,i;
H.Make_MaxHeap();
H.Print();
cout<<"\n Enter A New Number:";
cin>>n;
H.Insert(n);
H.Print();
cout<<"Enter A number to remove it frome Heap:";
cin>>n;
H.Remove(n);
H.Print();
}