Sắp xếp trong danh sách liên kết

Thảo luận trong 'C/C++' bắt đầu bởi jinyotino, 29 Tháng năm 2010.

  1. Offline

    jinyotino

    • Friends

    Số bài viết:
    569
    Đã được thích:
    211
    Điểm thành tích:
    140
    Đây là sắp xếp chèn và chọn trong danh sách liên kết. Bạn nào quan tâm thì tham gia nào

    PHP:
    #include <stdio.h>
    #include <conio.h>

    typedef struct Node
    {
        
    int Element;
        
    Node *link;
    }List;

    List *
    Locate(int n,List *T)
    {
        List *
    P,*q;
        
    int count=0;
        
    P=T;
        if(
    T==NULL)
        {
            
    printf("Danh danh rong");
        }
        else
        {
            while(
    P!=NULL && count<n)
            {
               
    count++;
               
    q=P;
               
    P=P->link;
            }
        }
            if(
    count==n)
            return 
    q;
            else
            return 
    NULL;
    }

    void make(List **First)
    {
        (*
    First)=NULL;
    }

    void insert(int n,int x,List **T)
    {
        List *
    P;
        
    = new List;
        
    P->Element x;
        if(
    n==1)
        {
            
    P->link=(*T);
            (*
    T)=P;
        }
        else
        {
            List *
    q;
            
    Locate(n-1,*T);
            if(
    q==NULL)
            
    printf("Vi tri khong hop le");
            else
            {
            
    P->link q->link;
            
    q->link P;
            }
        }
    }

    void delete_list(int n,List **T)
    {
        List *
    P,*q;
        if(
    n==1)
        {
          
    = (*T);
          (*
    T)=P->link;
          
    delete(P);
        }else{
             
    Locate(n-1,*T);
             if(
    q==NULL)
             {
            
    printf("Vi tri khong hop le!");
             }
             else
             {
             
    q->link;
             
    q->link P->link;
             }
        }
    }
    void xuat(List **T)
    {
        List *
    P;
        
    = (*T);
        while(
    P!=NULL)
        {
          
    printf("%d ",P->Element);
          
    P=P->link;
        }

    }

    void nhap(int n,List **T)
    {
        
    int i,k;
        for(
    i=1;i<=n;i++)
        {
            
    printf("Nhap pt %d : ",i);
            
    scanf("%d",&k);
            
    insert(i,k,&(*T));
        }
    }
    int n;


    void sapxepchen(List **T)
    {
        
    int x,i,j;
        List *
    p,*q,*r;
        for(
    i=2;i<=n;i++)
        {
          
    j=i-1;
           
    q=Locate(j,*T);
           
    p=q->link;
           
    x=p->Element;
           while(
    x<q->Element && q!=NULL)
           {
            
    r=q->link;
            
    r->Element=q->Element;
            
    j--;
            
    q=Locate(j,*T);
           }
           if(
    q==NULL)
           {
            
    q=(*T);
            
    q->Element x;
           }
           else
           {
           
    r=q->link;
           
    r->Element=x;
           }

        }
    }

    /*
    void sapxepchon(List **T)
    {
        List *p,*q,*m;
        p = (*T);
        while(p!=NULL)
        {
            m=p;
            q=p->link;
            while(q!=NULL)
            {
                if(q->Element<m->Element)
                m=q;
                q=q->link;
            }
            if(m!=p)
            {
                int tam;
                tam=p->Element;
                p->Element=m->Element;
                m->Element=tam;
            }
            p=p->link;
        }

    }
    */



    void main()
    {
        
    clrscr();
        List *
    First,*P;
        
    int i,k;

        
    int vt;
        
    make(&First);
        
    printf("Nhap n : ");
        
    scanf("%d",&n);
        
    nhap(n,&First);
        
    printf("\nCac gia tri vua nhap : ");
        
    xuat(&First);
         
    //    printf("\nNhap vao gia tri can them : ");
         //    scanf("%d",&k);
         //    printf("\nNhap vao vi tri can chen : ");
         //    scanf("%d",&vt);
         //    insert(vt,k,&First);
         //    xuat(&First);
         //    printf("\nNhap vi tri can xoa : ");
         //    scanf("%d",&vt);
         //    delete_list(vt,&First);
         //    xuat(&First);
        
    sapxepchen(&First);
        
    printf("\nSau khi sap xep : ");
        
    xuat(&First);
        
    getch();

    }
    sunboy thích bài này.

Chia sẻ trang này

Advertising: Linux system admin | nukeviet | nukeviet 4 | Upload ảnh miễn phí