Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 4 của 4
  1. #1
    Ngày tham gia
    Sep 2015
    Đang ở
    89 Tam Trinh - Hoàng Mai - Hà Nội
    Bài viết
    0

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Cần giúp về môn Cấu trúc dữ liệu --Gấp lắm!!

    Cho một danh sách liên kết đơn gồm nhiều phần tử, mỗi phần tử gồm có vùng info là một ký tự ('A' -->'Z') và vùng liên kết chứa địa chỉ của phần tử kế tiếp.Viết chương trình thực hiện các công việc sau:
    1.Đếm số ký tự (không trùng nhau) có trong danh sách liên kết.
    2.Sắp xếp danh sách tăng dần theo phương pháp nổi bọt.
    3.Bổ sung vào danh sách đã sắp xếp này sao cho dnh sách sẽ chứa đầy đủ các ký tự từ 'A' đến 'Z'
    Ở trên là đề bài thực hành môn Cấu trúc dữ liệu của tui nhưng mấy tuần nay tui suy nghĩ mãi chẳng biết làm thế nào mà hạn nộp bài sắp tới rùi( cụ thể là trong tuần này).Bạn nào giỏi về danh sách liên kết thì gợi ý về thuật toán giúp tui với.please!!!

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi 102101061124
    Cho một danh sách liên kết đơn gồm nhiều phần tử, mỗi phần tử gồm có vùng info là một ký tự ('A' -->'Z') và vùng liên kết chứa địa chỉ của phần tử kế tiếp.Viết chương trình thực hiện các công việc sau:
    1.Đếm số ký tự (không trùng nhau) có trong danh sách liên kết.
    2.Sắp xếp danh sách tăng dần theo phương pháp nổi bọt.
    3.Bổ sung vào danh sách đã sắp xếp này sao cho dnh sách sẽ chứa đầy đủ các ký tự từ 'A' đến 'Z'
    Ở trên là đề bài thực hành môn Cấu trúc dữ liệu của tui nhưng mấy tuần nay tui suy nghĩ mãi chẳng biết làm thế nào mà hạn nộp bài sắp tới rùi( cụ thể là trong tuần này).Bạn nào giỏi về danh sách liên kết thì gợi ý về thuật toán giúp tui với.please!!!
    Tớ nghĩ cái này rất nhiều trên mạng, hoặc cậu có thể đọc quyển CTDL&GT của tác giả Nguyễn Hồng Chương cực đỉnh luôn, nhưng thời gian của cậu thì hơi gấp thật

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Mình làm như vậy mà nó vẫn chạy ko đúng , bạn nào chỉ ra chỗ sai giúp mình với.Cảm ơn nhìu .
    Mã:
    #include<stdio.h>
    #include<conio.h>
    #include<string.h>
    //#include<iostream.h>
    typedef  char info[1];
    struct element
    {
     info kitu;
     element *next;
    };
    struct man
    {
     info kitu;
    };
    typedef man DS[100];
    DS A;
    int n;
    typedef element *list;
    list f;
    //A[100]=new element;
    //Khoi tao danh sach
    void create(list &f)
    {
    	f=NULL;
    }
    
    //them mot phan tu vao danh sach
    void insert(list &f,info x)
    {
         list p;
         p=new element;
        strcpy((*p).kitu,x);
         (*p).next=f;
         f=p;
    
    }
    /hap moi mot danh sach cac phan tu la cac ki tu tu A-Z
    void getlist(list &f)
    {f=NULL;
    int n,s=0;info x;
    //printf("
     nhap so phan tu");
    //scanf("%d",&n);
    while(strlen(x))
    {
               printf("
    nhap mot ki tu");
               fflush(stdin);gets(x);
               insert(f,x);s++;
      }
    }
    //Liet ke danh sach.
    void display(list f)
    {   list p=f; //printf("cut");
         while(p!=NULL)
         {
            puts((*p).kitu);//printf("%10c",(int)(*p).kitu);
            p=(*p).next;
            }
    }
    
    int demtatca(list f,int n)
    {
      int i=0;list p;p=f;
      while(p!=NULL)
      {p=(*p).next;
      i++;
      }//for(i=0;i<n;i++)puts(A[i].kitu);
     
           // if((strcmp((*B[l]).kitu,(*B[z]).kitu))=0)a++;
           // }
           // k=k-a;
      //for(t=f;t!=NULL;t=(*t).next)
      //{  while(q!=NULL)
        //{ q=(*q).next;
       // if((strcmp((*q).kitu,(*t).kitu))==0)i++;
        //}
      
        //}
       // j=k-i;
        return(i-1);
        }
        void duavaoman(list f,DS &A,int &n)
    {
         int k=0,m;
         list t;
         t=f;
         strcpy(A[0].kitu,(*t).kitu);
         while(t!=NULL)
         { 
           t=(*t).next;
           k++;
          strcpy(A[k].kitu,(*t).kitu);
           }n=k-1;
          for(m=0;m<=n-1;m++)
           puts(A[m].kitu);
    }
    //Hoan vi
    int demtrung(list f,DS A,int n)
    {
        int i,j,k=0;
        for(i=0;i<n;i++)
         for(j=i+1;j<n;j++)
        { if((((A[i]).kitu==(A[j]).kitu))==0)k++;}
         return(k);
    }
    void hoanvi(DS a,DS b)
    { DS tg;
        //   tg=a;
           a=b;
          b=tg;
    
    }
    void disp(DS A,int n)
    {
         int i;DS tg;
         for(i=0;i<n;i++)
         printf("%c",A[i].kitu);
         }
    //Sap xep damh sach tang dan theo phuong phap noi bot
    void bubblesort(list &f,DS A,int n)
    { 
         int i,j,k=0;
         list t ;
         t=f;
       for(i=0;i<n;i++)
         for(j=n-1;j>i;j--)
         {
            if((strcmp(A[j-1].kitu,A[j].kitu))<0)
            //{
          // tg=a;
           //a=b;
           //b=tg;}
          // hoanvi(A[j-1],A[j]);
            disp(A,n);
    }
    }
    //Them cac phan tu cho day du cac ki tu tu A=>Z
     void them(list &f)
    {
     list p;info y;int a;
    /*int ;*/p=f;
    for(a=65;a<=90;a++)
    {
     // y=(info)a;
      p=f;
       while(p!=NULL||strcmp((*p).kitu,y))
       {
          p=(*p).next;
          }if(p==NULL)insert(f,y);
    }
    } 
    
     //Ham main
    main()
    {
    	create(f);
    	
    	
      int chucnang;
    
      do{
    
        printf("
    ");
        printf("
     CHUONG TRINH QUAN LI DANH SACH GOM CAC KI TU TU A=>Z:");
        printf("
              **************************");
        printf("
       1: Nhap moi mot danh sach gom cac ki tu.");
        printf("
       2: Liet ke danh sach.");
        printf("
       3: Dem so phan tu khong trung nhau trong danh sach.");
        printf("
       4: Sap xep danh sach tang dan theo phuong phap noi bot.");
        printf("
       5: Them cac phan tu cho day du cac ki tu tu A=>Z.");
        printf("
       0: Ket thuc chuong trinh.");
        printf("
              **************************");
        printf("
    
     Chuc nang ban chon la gi?");
        scanf("%d",&chucnang);
        switch(chucnang)
        {
           case 1:   getlist(f);break;//getlist(f)
           case 2:   display(f);break;
           case 3:   printf("
     So phan tu khong trung nhau co trong danh sach la: %d.",demtrung(f,A,n));//duavaoman(f,A,n);
                        break;
           case 4:   {
                        bubblesort(f,A,n);
                        printf("
    Danh sach sau khi sap xep:
    ");
                       display(f);
                        break;             }
           case 5:   {
                        them(f);
                        printf("
    Danh sach sau khi them:
    ");
                        display(f);
                        break;
                     }
        }
      }while(chucnang!=0);
    }

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •