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.

    Thêm một bài danh sách liên kết nữa nà.

    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

    Thêm một bài danh sách liên kết nữa nà. Empty Thêm một bài danh sách liên kết nữa nà.

    Bài gửi by NgPPhung 4/11/2009, 20:48

    Đề: Cho 1 dslk đơn, mỗi phần tử là một số nguyên.
    a. Đếm số nguyên tố trong danh sách.
    b. tạo một ds chỉ chứa số chẳn và chia hết cho 3 từ ds trên.
    c. sắp xếp ds giảm dần.

    Code:
    #include"iostream.h"
    typedef struct nut
    {
       int a;
       nut *tiep;
    };
    typedef struct DanhSach
    {
       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 TaoDS(DanhSach &DS)
    {
       DS.dau=DS.cuoi=NULL;
    }
    void ThemDau(DanhSach &DS,nut *x)
    {
       if(DS.dau==NULL)
       {
          DS.dau=DS.cuoi=x;
       }
       else
       {
          x->tiep=DS.dau;
          DS.dau=x;
       }
    }
    nut  *ChenDau(DanhSach &DS,int x)
    {
       nut *p=TaoNut(x);
       if(p==NULL)
          return NULL;
       ThemDau(DS,p);
       return p;
    }
    void Nhap(DanhSach &DS)
    {
       int n,x,i;
       TaoDS(DS);
       cout<<"Nhap so phan tu cua danh sach n= ";
       cin>>n;
       for(i=1;i<=n;i++)
       {
          cout<<"a"<<i<<"= ";
          cin>>x;
          ChenDau(DS,x);
       }
       cout<<"Danh sach gom: ";
    }
    void Xuat(DanhSach DS)
    {
       nut *p;
       for(p=DS.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;
    }
    int DemSNT(DanhSach DS)
    {
       int d=0;
       nut *p;
       for(p=DS.dau;p!=NULL;p=p->tiep)
       {
          if( p->a > 1 && KiemTraSNT(p->a) == 1)
             d++;
       }
       return d;
    }
    void DanhSachSoChanChiaHetCho3(DanhSach DS)
    {
       nut *p;
       DanhSach ds;
       TaoDS(ds);
       for(p=DS.dau;p!=NULL;p=p->tiep)
       {
          if( p->a % 2 == 0 && p->a % 3 == 0 )
             ChenDau(ds,p->a);
       }
       Xuat(ds);
    }
    void HoanVi(int &x,int &y)
    {
       int t;
       t=x;
       x=y;
       y=t;
    }
    void SapXepGiam(DanhSach DS)
    {
       nut *p,*q;
       for(p=DS.dau;p!=NULL;p=p->tiep)
       {
          for(q=p->tiep;q!=NULL;q=q->tiep)
             if(q->a > p->a)
                HoanVi(p->a,q->a);
       }
       Xuat(DS);
    }
    main()
    {
       DanhSach DS;
       Nhap(DS);
       Xuat(DS);
       cout<<"\nCo "<<DemSNT(DS)<<" so nguyen to trong danh sach";
       cout<<"\nDanh sach chua cac so chan va chia het cho 3 la: "; DanhSachSoChanChiaHetCho3(DS);
       cout<<"\nDanh sach sau khi sap xep giam la: ";SapXepGiam(DS);cout<<endl;
    }

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