نمایش نتایج 1 تا 6 از 6

نام تاپیک: Max Heap

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #1

    Max Heap

    سلام
    من برنامه 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();
    }
    آخرین ویرایش به وسیله whitehat : جمعه 26 بهمن 1386 در 21:51 عصر دلیل: اضافه کردن تگ کد

تاپیک های مشابه

  1. stack & heap
    نوشته شده توسط mohsenaminzare در بخش VB.NET
    پاسخ: 1
    آخرین پست: شنبه 20 بهمن 1386, 18:36 عصر
  2. Stack & Heap Memory
    نوشته شده توسط mr_esmaily در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 2
    آخرین پست: چهارشنبه 22 تیر 1384, 10:22 صبح

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •