exchanging

خيلي حياتيه خواهشن کمک کنيد (ساختمان داده در ++c)

شروع موضوع توسط oranoos_mta ‏11 ژانویه 2008 در انجمن خانواده C++ , C

  1. oranoos_mta

    oranoos_mta Registered User

    تاریخ عضویت:
    ‏22 آپریل 2007
    نوشته ها:
    1,144
    تشکر شده:
    33
    PHP:
        فرض کنید        x=(x_1,x_2,,x_n)و   y=(y_1,y_2,,y_m )   دو لیست پیوندی هستند الگوریتمی برای ادغام این دو لیست بنویسید تا اگر m<=n باشد لیست پیوندی
      z
    =(x_1,y_1,x_2,y_2,,x_m  ,y_m  ,x_(m+1),,x_n)    بدست آید و اگر m>n باشد 
      z
    =(x_1,y_1,x_2,y_2,,x_n  ,y_n  ,x_(n+1),,y_m )  بدست آید.
    پس از ادغام  دو لیست x و y  باید لیستهای خالی را نشان دهند زیرا هر گره ی اولیه در  x  و  y  اکنون در  z  است از هیچ گره ی اضافی استفاده نکنید  زمان اجرای این الگوریتم را حساب کنید.

    List-
    pointr merge(list-pointer ptr1,list-pointer ptr2)
    {
        List-
    pointer  temp;
        
    Temp=(list-pointer ) new (sizeof(list-node));
        If(
    is-full(temp))
        {
            
    Cout<<"memory is full\n";
            Exit(
    1);
        }
        
    Int i ;
        If( 
    <= )
         {
            For(
    temp=ptr1 temp -> link temp=temp -> link )
             {
                
    Temp -> link ptr2 ;
                
    += 1;
                If ( 
    == m)
                  Break;
             }
        While ( 
    != )  {
            
    Temp -> link ptr2;
            
    += 1;
        }
        if( 
    )
        {
    خوب به نظر شما این تابع همون کارو میکنه یا نه کلا تابع غلطه کمکم کنید

        فرض کنید        x
    =(x_1,x_2,,x_n)و   y=(y_1,y_2,,y_m )   دو لیست پیوندی هستند فرض کنید در هر لیست پیوندی ‘ گره ها به ترتیب غیر نزولی مقادی فیلد data شان قرار گرفته اند.الگوریتمی برای ادغام این دو لیست بنویسید تا لیست پیوندی جدید z  تولید کند که در آن گره ها نیز به همین ترتیب هستند پس از ادغام  دو لیست x و y  باید لیستهای خالی را نشان دهند زیرا هر گره ی اولیه در  x  و  y  اکنون در  z  است از هیچ گره ی اضافی استفاده نکنید  زمان اجرای این الگوریتم را حساب کنید.
        
    سوال بعدی اینه که من نسخه غیر بازگشتیه تابع preorder() یک درخت را نوشتم درخواستم از شما اینه که چطور میشه نسخه غیر بازگشتیه تابع postorder() را بنویسم.
    اینم کد نسخه غیر بازگشتیه preorder() 
    void tree::preorder(tree node *s)
    {
        
    tree node=*p=root;
        do{
            while(
    != null)
            {
                
    cout<<-> data;
                
    s.push(p);
                
    p=p->left;
                if(!(
    s-empty())
                {
                    
    p=s.pop();
                    
    p=p->right;
                }
            }while(!(
    s.empty()) || != null)
        }
    }
        
    الگوریتمی به نام swaptree() که یک درخت دودویی دریافت و جای بچه های چپ و راست هر گره را عوض کند

        این سوال هم فکر نکنم زیاد سخت باشه 
    الگوریتمی برای اضافه کردن یک عضو در min heap البته من الگوریتم در max heap شو میزارم شاید بدرد خورد
    void insert
    -max-heap(element item,int *n)
    {
        
    int i;
        if(
    heap-full(*n)
        {
            
    cout<<"tree is full\n";
            exit(
    1);
        }
        
    i=++(*n);
        while((
    i!=1)&&(item.key>heap[i/2].key))
        {
            
    heap[i]=heap[i/2];
            
    i/=2;
        }
        
    heap[i]=item;
    }


        
    این سوال هم فکر کنم بتونید کمکم کنید
    الگوریتمی برای حذف کوچکترین عضو در min heap البته من الگوریتم در max heap شو میزارم شاید کمک کنه
    void element delete
    -max-heap(int*n)
    {
        
    int parent,child;
        
    element temp,item;
        if(
    heap-empty(*n))
        {
            
    cout<<"tree is empty\n";
            exit(
    1);
        }
        
    item=heap[1];
        
    temp=heap[(*n)--];
        
    parent=1;
        
    child=2;
        while(
    child<=*n)
        {
            if((
    child<=*n)&&(heap[child].key<heap[child+1].key))
                
    child++;
            if(
    temp.key>=heap[child].key)
                break;
            
    heap[parent]=heap[child];
            
    child*=2;
        }
        
    heap[parent]=temp;
        return 
    item;
    }
     
  2. oranoos_mta

    oranoos_mta Registered User

    تاریخ عضویت:
    ‏22 آپریل 2007
    نوشته ها:
    1,144
    تشکر شده:
    33
    بابا یکی کمک کنه