Information Technology VietNam

Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.

4 posters

    Bài 3-3 về danh sách liên kết

    NgPPhung
    NgPPhung
    Super Moderator
    Super Moderator


    Giới tính : Nữ Bài gửi : 73
    Tổng Điểm : 144
    Điểm Thưởng : 8
    Sinh Nhật : 26/04/1990 Bị Dụ Dỗ : 11/09/2009
    Tuổi : 34

    Bài 3-3 về danh sách liên kết Empty Bài 3-3 về danh sách liên kết

    Bài gửi by NgPPhung 4/11/2009, 03:00

    đề: Cho một danh sách liên kết đơn L, mỗi nút là một số nguyên.
    a. Tạo một danh sách LL chứa các số nguyên tố từ danh sách L.
    b. Tách danh sách L thành 2 danh sách, một danh sách chứa toàn số chẵn, một danh sách chứa toàn số lẻ.

    Mình mới học về danh sách liên kết nên cũng chưa thành thạo lắm. Mọi người xem đoạn code của mình rùi cho mình ý kiến nha. Nếu ai có giải thuật tốt hơn thì share cho mình với nhá.

    Code:
    #include"iostream.h"
     typedef struct nut
     {
        int a;
        nut *tiep;
     };
     typedef struct List
     {
        nut *dau;
        nut *cuoi;
     };
     nut *TaoNut(int x)
     {
        nut *p=new nut;
        if(p==NULL)
           cout<<"Khong du bo nho";
       
       p->a=x;
       p->tiep=NULL;
       return p;
     }
     void TaoList(List &L)
     {
        L.dau=L.cuoi=NULL;
     }
     void ThemDau(List &L,nut *x)
     {
        if(L.dau==NULL)
       {
          L.dau=L.cuoi=x;
       }
       else
       {
          x->tiep=L.dau;
          L.dau=x;   
       }
     }
     nut *ChenDau(List &L,int x)
     {
        nut *p=TaoNut(x);
        if(p==NULL)
           return NULL;
       ThemDau(L,p);
       return p;
     }
     void Xuat(List L)
     {
        nut *p;
        for(p=L.dau;p!=NULL;p=p->tiep)
           cout<<p->a<<" ";
     }
     int KiemTraSNT(int n)
     {
        for(int i=2;i<=n/2;i++)
        {
           if(n%i==0)
              return 0;
        }
       return 1;
     }
     void DanhSachSNT(List &L)
     {
        nut *p;
        List LL;
        TaoList(LL);
        for(p=L.dau;p!=NULL;p=p->tiep)
        {
           if(p->a>1 && KiemTraSNT(p->a)==1)
              ChenDau(LL,p->a);
        }
       Xuat(LL);
     }
     void Tach(List &L)
     {
        nut *p;
        List L1,L2;
        TaoList(L1);
        TaoList(L2);
        for(p=L.dau;p!=NULL;p=p->tiep)
        {
           if( p->a%2==0 )
              ChenDau(L1,p->a);
          else
             ChenDau(L2,p->a);
        }
       cout<<"\nDanh sach cac so chan: ";Xuat(L1);
       cout<<"\nDanh sach cac so le: ";Xuat(L2);
     }
     main()
     {
        List L;
        int n,x,i;
        TaoList(L);
        cout<<"Nhap so phan tu n= ";
        cin>>n;
        for(i=1;i<=n;i++)
        {
           cout<<"a"<<i<<"= ";
           cin>>x;
           ChenDau(L,x);
        }
        cout<<"Danh sach L la: ";Xuat(L);
        cout<<"\nDanh sach chua cac so nguyen to la: "; DanhSachSNT(L);
        Tach(L);
     }
    ban_tuongky
    ban_tuongky
    Moderator
    Moderator


    Giới tính : Nam Bài gửi : 91
    Tổng Điểm : 198
    Điểm Thưởng : 0
    Bị Dụ Dỗ : 11/09/2009

    Bài 3-3 về danh sách liên kết Empty Re: Bài 3-3 về danh sách liên kết

    Bài gửi by ban_tuongky 4/11/2009, 13:53

    thanks
    avatar
    minhchi692002
    New Member
    New Member


    Giới tính : Nam Bài gửi : 9
    Tổng Điểm : 11
    Điểm Thưởng : 0
    Sinh Nhật : 13/09/1990 Bị Dụ Dỗ : 21/09/2009
    Tuổi : 34

    Bài 3-3 về danh sách liên kết Empty Re: Bài 3-3 về danh sách liên kết

    Bài gửi by minhchi692002 8/11/2009, 08:19

    tai sao phai viet them ham chendau nua ?
    giải thích dùm mình p->a co nghĩa là gì ?
    avatar
    minhchi692002
    New Member
    New Member


    Giới tính : Nam Bài gửi : 9
    Tổng Điểm : 11
    Điểm Thưởng : 0
    Sinh Nhật : 13/09/1990 Bị Dụ Dỗ : 21/09/2009
    Tuổi : 34

    Bài 3-3 về danh sách liên kết Empty Re: Bài 3-3 về danh sách liên kết

    Bài gửi by minhchi692002 8/11/2009, 08:23

    if(p->a>1 && KiemTraSNT(p->a)==1)
    ChenDau(LL,p->a);
    doan code minh ko hieu
    NgPPhung
    NgPPhung
    Super Moderator
    Super Moderator


    Giới tính : Nữ Bài gửi : 73
    Tổng Điểm : 144
    Điểm Thưởng : 8
    Sinh Nhật : 26/04/1990 Bị Dụ Dỗ : 11/09/2009
    Tuổi : 34

    Bài 3-3 về danh sách liên kết Empty Re: Bài 3-3 về danh sách liên kết

    Bài gửi by NgPPhung 8/11/2009, 08:25

    Code:
    for(i=1;i<=n;i++)
        {
          cout<<"a"<<i<<"= ";
          cin>>x;
          ChenDau(L,x);
        }

    Trong phần nhập mình cần hàm chèn đầu gần như là mặc định.
    p->a tức là truy suất tới dữ liệu a trong nút p.
    avatar
    minhchi692002
    New Member
    New Member


    Giới tính : Nam Bài gửi : 9
    Tổng Điểm : 11
    Điểm Thưởng : 0
    Sinh Nhật : 13/09/1990 Bị Dụ Dỗ : 21/09/2009
    Tuổi : 34

    Bài 3-3 về danh sách liên kết Empty Re: Bài 3-3 về danh sách liên kết

    Bài gửi by minhchi692002 8/11/2009, 08:47

    thank ban nhieu nhe
    Vy Thanh Định
    Vy Thanh Định
    Web Master
    Web Master


    Giới tính : Nam Bài gửi : 228
    Tổng Điểm : 544
    Điểm Thưởng : 16
    Sinh Nhật : 19/05/1990 Bị Dụ Dỗ : 11/09/2009
    Tuổi : 34

    Bài 3-3 về danh sách liên kết Empty Re: Bài 3-3 về danh sách liên kết

    Bài gửi by Vy Thanh Định 8/11/2009, 08:52

    minhchi692002 đã viết:if(p->a>1 && KiemTraSNT(p->a)==1)
    ChenDau(LL,p->a);
    doan code minh ko hieu

    Cái này có thể viết rõ ra là if( ((p->a) > 1) && KiemTraSNT(p->a) == 1 )

    Ở đây bạn hiểu nó là điều kiện, dòng lệnh tiếp theo là nếu thỏa điều kiện thì bạn gọi hàm ChenDau() về,ở đây là chèn vào danh sách mới LL, nếu thấy không rõ bạn có thể đặt là danhSach2 cho rõ, và hàm chèn đầu thì có trong bài rùi đó. Hì hì cùng cố gắng nha

    Sponsored content


    Bài 3-3 về danh sách liên kết Empty Re: Bài 3-3 về danh sách liên kết

    Bài gửi by Sponsored content


      Hôm nay: 25/11/2024, 15:41