Từ 1 tới 5 trên tổng số 5 kết quả

Đề tài: Sử dụng danh sách liên kết FIFO và LIFO để xây dựng chương trình quản lý sinh viên?

  1. #1
    Ngày gia nhập
    03 2009
    Nơi ở
    Hà nội
    Bài viết
    6

    Mặc định Sử dụng danh sách liên kết FIFO và LIFO để xây dựng chương trình quản lý sinh viên?

    Tạo kiểu cấu trúc Học sinh có các thông tin Họ đệm, tên, điểm toán, điểm văn, điểm trung bình.
    - Nhập danh sách sinh viên
    - Sắp xếp danh sách theo tên, nếu trùng tên thì sắp theo họ đệm
    - Sắp xếp danh sách theo điểm trung bình
    Sử dụng danh sách liên kết dạng LIFO và FIFO (không dùng mảng) và thêm 2 chức năng sau:
    - Chèn thêm một sinh viên vào danh sách đã có
    - Xoá một sinh viên trong danh sách đã có.
    Hì hì. em sắp phải nộp bài rồi mà chưa làm được, mong các đại ca chỉ dạy nhe.
    Học ! Học nữa ! Học nữa ! Học nữa ! Học mãi !

  2. #2
    Ngày gia nhập
    11 2008
    Bài viết
    203

    Rất tiếc là mình bận, với lại cái này mình phải coi lại giáo trình mới được, nếu không mình có thể cho bạn source code.
    Đây là bài DSLK đơn của PoPo làm:

    Danh sách liên kết đơn - Lý căn bản và cách triển khai danh sách liên kết

    Nếu chưa học qua môn cấu trúc dữ liệu thì bạn không nên làm bài này làm gì, cứ đến nói thẳng với thầy, em không biết làm, đợi em học xong Cấu trúc dữ liệu sẽ nộp thầy sau..
    Đã được chỉnh sửa lần cuối bởi Loveanygirls : 25-03-2009 lúc 11:44 PM.

  3. #3
    Ngày gia nhập
    08 2008
    Nơi ở
    Liên Bang Nga
    Bài viết
    46

    Mặc định FIFO và LIFO

    Mình có viết sẵn chương trình rồi, tuy nó cũng còn hơi đơn giản, nhưng mà lấy đấy làm cái sườn để tham khảo cũng được, hi vọng có ích cho bạn
    Viết vội bằng notepad và chưa test thử nên có lỗi thì các bạn vui lòng chỉnh lại cái
    C Code:
    1. /* Chuong trinh quan li du lieu voi cac chuc nang sau :
    2. 1/ Tao mot danh sach
    3. 2/ Tim kiem trong danh sach
    4. 3/ Ghi chen de vao danh sach
    5. 4/ Them ten vao danh sach
    6. 5/ Lay thong tin tu danh sach*/
    7. #include<conio.h>;
    8. #include<string.h>;
    9. #include<stdlib.h>;
    10. #include<ctype.h>;
    11. #include<stdio.h>;
    12. #include<iostream.h>;
    13. void taomenu();
    14. void themsv();
    15. void vitrihv(char st[], int d);
    16. void timkiem();
    17. void loaibo();
    18. void lietke();
    19. typedef struct sinhvien
    20.    {
    21.      char hoten[30];
    22.      int diem;
    23.      struct  sinhvien *tiep;
    24.    } sinhvien;  //Khai bao mot kieu cau truc hang
    25. #define sizesv sizeof(sinhvien)
    26. sinhvien *head; //Con tro luon tro den dau danh sach
    27. sinhvien *sv;//Bien tam thoi
    28. //CHUONG TRINH CHINH
    29. //******************
    30. void main()
    31.     {
    32.       clrscr();
    33.       gotoxy(1,12);
    34.       printf("Chuong trinh quan li hoc vien(DSLK)\n");
    35.       //getch();
    36.       sinhvien* tiep=NULL;//Con tro ke tiep khong chi di dau ca
    37.       taomenu();
    38.     }
    39. //TAO MOT GIAO DIEN NGUOI DUNG
    40. //****************************
    41. void taomenu()
    42.     {
    43.       char ch;
    44.       do
    45.        {
    46.     clrscr();
    47.     printf("Press I to Insert\n");
    48.     printf("Press F to Search\n");
    49.     printf("Press D to Delete\n");
    50.     printf("Press E to Enumerate\n");
    51.     printf("Press Q to Quit(Q)\n");
    52.     ch=toupper(getch());
    53.     switch (ch)
    54.       {
    55.         case 'I':themsv();
    56.         break;
    57.         case 'F':timkiem();
    58.         break;
    59.         case 'D':loaibo();
    60.         break;
    61.         case 'E':lietke();
    62.         break;
    63.         case 'Q':exit(1); break;
    64.         defaut: break;
    65.       }
    66.        } while (ch!='Q');
    67.     }
    68. //Insert ctydent to list..........
    69. //********************************
    70. void themsv()
    71.     {
    72.       char  tensv[30];
    73.       char buffer[30];
    74.       int   d;
    75.       clrscr();
    76.       printf("Them sinh vien vao danh sach \n");
    77.       printf(" Ho ve ten :");
    78.       cin.getline(buffer,30);
    79.       strcpy(tensv,buffer);
    80.       printf(" Diem : ");
    81.       scanf("%d",&d);
    82.       vitrihv(tensv,d);
    83.      // char ch;
    84.      // ch=getch();
    85.      // while(ch!='\n')ch=getch();
    86.     }
    87. //TIM KIEM TRONG DANH SACH MOT DU LIEU NHAP VAO TU TRUONG NGOAI
    88. //*************************************************************
    89. void timkiem()
    90.     {
    91.       clrscr();
    92.       char tensv[30]; char buffer[30];
    93.       int  kq;
    94.       printf("Ten sinh vien can tim : ");
    95.       cin.getline(buffer,30);
    96.       strcpy(tensv,buffer);
    97.      if ( (tensv!=" ") && (head!=NULL)&&(tensv!='\0') )
    98.     {
    99.       sv=head;
    100.       while ( (sv!=NULL)&&((kq=strcmp(sv->hoten,tensv))<0) )
    101.       sv=sv->tiep;
    102.       if (kq==0)
    103.       printf("Ho ten %s diem %d",sv->hoten,sv->diem);
    104.     }
    105.     else
    106.      printf(" Khong co sinh vien %s\n",tensv);
    107.       getch();
    108.     }
    109. //LOAI BO THEO MOT TIEU CHUAN NAO DO
    110. //**********************************
    111. void loaibo()
    112.     {
    113.     char tensv[30];
    114.     char buffer[30];
    115.     int  kq=1;
    116.     sinhvien* next;
    117.     clrscr();
    118.     printf("Ten sinh vien can loai bo : ");
    119.     cin.getline(buffer,30);
    120.     strcpy(tensv,buffer);
    121.     if ((tensv!=NULL)&&(head!=NULL))
    122.         {
    123.           sv=head;
    124.           next=sv;
    125.           while ((kq=strcmp(sv->hoten,tensv))<0)
    126.          {
    127.             next=sv;
    128.             sv=sv->tiep;
    129.             if(sv==NULL)break;
    130.          }
    131.           //printf("%d\n",kq);  getch();
    132.           if( kq==0){
    133.                 if (sv==head){head=head->tiep;free(sv);return;}
    134.                 next->tiep=sv->tiep;
    135.                 free(sv);
    136.             }
    137.           else printf ("khong co ten nhu the trong danh sach !");
    138.         }
    139.     }
    140. //LIET KE CAC PHAN TU DA CO TRONG DANH SACH
    141. //*****************************************
    142. void lietke()
    143.     {
    144.        clrscr();
    145.        sv=head;
    146.        if (sv==NULL)printf("Khong co sinh vien nao de liet ke ca !");
    147.        else while(sv!=NULL)
    148.     {
    149.       //printf("Ho va ten : %s\n",sv->hoten);
    150.       puts(sv->hoten);
    151.       printf("Diem : %d\n\n",sv->diem);
    152.       sv=sv->tiep;
    153.     }
    154.        getch();
    155.     }
    156. //XAC DINH VI TRI DE CHEN VAO
    157. //***************************
    158. void vitrihv(char st[], int dd)
    159.     {
    160.      sinhvien* find=NULL,* next=NULL;
    161.      int kq;
    162.      char ch;
    163.      sv=NULL;
    164.      sv= (sinhvien *) malloc (sizeof(sinhvien));
    165.      if (sv  ==NULL)
    166.       {
    167.       printf (" Khong du bo nho de luu danh sach ");
    168.       getch();
    169.       return;
    170.       }
    171.      strcpy(sv->hoten,st); // printf("%s\n",sv->hoten); getch();
    172.      sv->diem=dd;
    173.      sv->tiep=NULL;
    174.      //Neu danh sach ban dau la rong thi tao mot danh sach moi
    175.      if (head==NULL)
    176.     {
    177.     head=sv;
    178.     head->tiep=NULL;
    179.     }
    180.       else//Neu ban dau da co mot danh sach lien ket
    181.       {//Tim vi tri moi trong danh sach cho doi tuong moi nhap vao
    182.       find=head;//Tu dau danh sach lien ket
    183.       next=find;//Con tro luon chi toi con tro find
    184.       while ((find!=NULL)&&((kq=strcmp(find->hoten,sv->hoten))<0))
    185.     {
    186.      next=find;
    187.      find=find->tiep;
    188.     }
    189.        if (kq==0)
    190.       {
    191.         printf("sinh vien da co trong danh sach. Ghi de(y/n) ?\n");
    192.         ch=getch();
    193.         ch=toupper(ch);
    194.         if (ch=='N')
    195.           {
    196.             free(sv);
    197.             return;
    198.           }
    199.         else {find->diem=dd;free(sv); return;}
    200.       }
    201.       //Neu phan tu la dau danh sach
    202.       if (find==head)
    203.          {
    204.          sv->tiep=head;
    205.          head=sv;
    206.          }
    207.       else   {
    208.          sv->tiep=find;
    209.          next->tiep=sv;
    210.          }
    211.      }
    212.     }
    Đã được chỉnh sửa lần cuối bởi lienthang : 26-03-2009 lúc 05:04 AM.
    Tôi thường thích những cái gì mà tôi không bao giờ có được...

  4. #4
    Ngày gia nhập
    03 2009
    Nơi ở
    Hà nội
    Bài viết
    6

    Mặc định Trả lời

    Em có sửa tí tẹo:Chạy được, Nhưng khi nhập danh sách thì chỉ được người đầu tiên còn những người sau thì lại sai. các anh xem cho em nha .

    C Code:
    1. /* Chuong trinh quan li du lieu voi cac chuc nang sau :
    2. 1/ Tao mot danh sach
    3. 2/ Tim kiem trong danh sach
    4. 3/ Ghi chen de vao danh sach
    5. 4/ Them ten vao danh sach
    6. 5/ Lay thong tin tu danh sach*/
    7. #include<conio.h>;
    8. #include<string.h>;
    9. #include<stdlib.h>;
    10. #include<ctype.h>;
    11. #include<stdio.h>;
    12. #include<iostream.h>;
    13. void taomenu();
    14. void themsv();
    15. void vitrihv(char st[], int d);
    16. void timkiem();
    17. void loaibo();
    18. void lietke();
    19. typedef struct sinhvien
    20.    {
    21.      char hoten[30];
    22.      int diem;
    23.      struct  sinhvien *tiep;
    24.    } sinhvien;  //Khai bao mot kieu cau truc hang
    25. #define sizesv sizeof(sinhvien)
    26. sinhvien *head; //Con tro luon tro den dau danh sach
    27. sinhvien *sv;//Bien tam thoi
    28. //CHUONG TRINH CHINH
    29. //******************
    30.  
    31. void gotoxy(int x, int y){
    32.   std::cout << "\033[" << y << ";" << x << "f" << std::flush;
    33. }
    34. int main()
    35.     {
    36.     system("cls");
    37.       gotoxy(1,12);
    38.       printf("Chuong trinh quan li hoc vien(DSLK)\n");
    39.       //getch();
    40.       sinhvien* tiep=NULL;//Con tro ke tiep khong chi di dau ca
    41.       taomenu();
    42.     }
    43. //TAO MOT GIAO DIEN NGUOI DUNG
    44. //****************************
    45. void taomenu()
    46.     {
    47.       char ch;
    48.       do
    49.        {
    50.     system("cls");
    51.     printf("Press I to Insert\n");
    52.     printf("Press F to Search\n");
    53.     printf("Press D to Delete\n");
    54.     printf("Press E to Enumerate\n");
    55.     printf("Press Q to Quit(Q)\n");
    56.     ch=toupper(getch());
    57.     switch (ch)
    58.       {
    59.         case 'I':themsv();
    60.         break;
    61.         case 'F':timkiem();
    62.         break;
    63.         case 'D':loaibo();
    64.         break;
    65.         case 'E':lietke();
    66.         break;
    67.         case 'Q':exit(1); break;
    68.         defaut: break;
    69.       }
    70.        } while (ch!='Q');
    71.     }
    72. //Insert student to list..........
    73. //********************************
    74. void themsv()
    75.     {
    76.       char  tensv[30];
    77.       char buffer[30];
    78.       int   d;
    79.       system("cls");
    80.       printf("Them sinh vien vao danh sach \n");
    81.       printf(" Ho ve ten :");
    82.       cin.getline(buffer,30);
    83.       strcpy(tensv,buffer);
    84.       printf(" Diem : ");
    85.       scanf("%d",&d);
    86.       vitrihv(tensv,d);}
    87.    //  char ch;
    88.     // while(ch!='\n');
    89.    
    90. //TIM KIEM TRONG DANH SACH MOT DU LIEU NHAP VAO TU TRUONG NGOAI
    91. //*************************************************************
    92. void timkiem()
    93.     {
    94.       system("cls");
    95.       char tensv[30]; char buffer[30];
    96.       int  kq;
    97.       printf("Ten sinh vien can tim : ");
    98.       cin.getline(buffer,30);
    99.       strcpy(tensv,buffer);
    100.      if ( (tensv!=" ") && (head!=NULL)&&(tensv!='\0') )
    101.     {
    102.       sv=head;
    103.       while ( (sv!=NULL)&&((kq=strcmp(sv->hoten,tensv))<0) )
    104.       sv=sv->tiep;
    105.       if (kq==0)
    106.       printf("Ho ten %s diem %d",sv->hoten,sv->diem);
    107.     }
    108.     else
    109.      printf(" Khong co sinh vien %s\n",tensv);
    110.       getch();
    111.     }
    112. //LOAI BO THEO MOT TIEU CHUAN NAO DO
    113. //**********************************
    114. void loaibo()
    115.     {
    116.     char tensv[30];
    117.     char buffer[30];
    118.     int  kq=1;
    119.     sinhvien* next;
    120.     system("cls");
    121.     printf("Ten sinh vien can loai bo : ");
    122.     cin.getline(buffer,30);
    123.     strcpy(tensv,buffer);
    124.     if ((tensv!=NULL)&&(head!=NULL))
    125.         {
    126.           sv=head;
    127.           next=sv;
    128.           while ((kq=strcmp(sv->hoten,tensv))<0)
    129.          {
    130.             next=sv;
    131.             sv=sv->tiep;
    132.             if(sv==NULL)break;
    133.          }
    134.           //printf("%d\n",kq);  getch();
    135.           if( kq==0){
    136.                 if (sv==head){head=head->tiep;free(sv);return;}
    137.                 next->tiep=sv->tiep;
    138.                 free(sv);
    139.             }
    140.           else printf ("khong co ten nhu the trong danh sach !");
    141.           getch ();
    142.         }
    143.     }
    144. //LIET KE CAC PHAN TU DA CO TRONG DANH SACH
    145. //*****************************************
    146. void lietke()
    147.     {
    148.        system("cls");
    149.        sv=head;
    150.        if (sv==NULL)printf("Khong co sinh vien nao de liet ke ca !");
    151.        else while(sv!=NULL)
    152.     {
    153.       //printf("Ho va ten : %s\n",sv->hoten);
    154.       puts(sv->hoten);
    155.       printf("Diem : %d\n\n",sv->diem);
    156.       sv=sv->tiep;
    157.     }
    158.        getch();
    159.     }
    160. //XAC DINH VI TRI DE CHEN VAO
    161. //***************************
    162. void vitrihv(char st[], int dd)
    163.     {
    164.      sinhvien* find=NULL,* next=NULL;
    165.      int kq;
    166.      char ch;
    167.      sv=NULL;
    168.      sv= (sinhvien *) malloc (sizeof(sinhvien));
    169.      if (sv  ==NULL)
    170.       {
    171.       printf (" Khong du bo nho de luu danh sach ");
    172.       getch();
    173.       return;
    174.       }
    175.      strcpy(sv->hoten,st); // printf("%s\n",sv->hoten); getch();
    176.      sv->diem=dd;
    177.      sv->tiep=NULL;
    178.      //Neu danh sach ban dau la rong thi tao mot danh sach moi
    179.      if (head==NULL)
    180.     {
    181.     head=sv;
    182.     head->tiep=NULL;
    183.     }
    184.       else//Neu ban dau da co mot danh sach lien ket
    185.       {//Tim vi tri moi trong danh sach cho doi tuong moi nhap vao
    186.       find=head;//Tu dau danh sach lien ket
    187.       next=find;//Con tro luon chi toi con tro find
    188.       while ((find!=NULL)&&((kq=strcmp(find->hoten,sv->hoten))<0))
    189.     {
    190.      next=find;
    191.      find=find->tiep;
    192.     }
    193.        if (kq==0)
    194.       {
    195.         printf("sinh vien da co trong danh sach. Ghi de(y/n) ?\n");
    196.         ch=getch();
    197.         ch=toupper(ch);
    198.         if (ch=='N')
    199.           {
    200.             free(sv);
    201.             return;
    202.           }
    203.         else {find->diem=dd;free(sv); return;}
    204.       }
    205.       //Neu phan tu la dau danh sach
    206.       if (find==head)
    207.          {
    208.          sv->tiep=head;
    209.          head=sv;
    210.          }
    211.       else   {
    212.          sv->tiep=find;
    213.          next->tiep=sv;
    214.          }
    215.      }
    216.     }
    Đã được chỉnh sửa lần cuối bởi chankx : 26-03-2009 lúc 11:00 PM. Lý do: sai lỗi chính tả
    Học ! Học nữa ! Học nữa ! Học nữa ! Học mãi !

  5. #5
    Ngày gia nhập
    01 2009
    Bài viết
    165

    code của bạn khai báo biến con trỏ mà ko cấp phát bộ nhớ cho nó nên nó chỉ lưu trữ dữ liệu của người đầu tiên thôi

Các đề tài tương tự

  1. Bài tập C Quản Lý Sinh Viên Bằng Danh sách liên kết
    Gửi bởi thienshaman trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 5
    Bài viết cuối: 16-04-2013, 07:52 AM
  2. Sử dụng danh sách liên kết để tạo chương trình quản lý sinh viên. Xin được giúp đỡ?
    Gửi bởi hieuboo trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 12-05-2012, 10:50 AM
  3. Quản lí sinh viên bằng stack dùng danh sách liên kết. Làm sao để nhập nhiều sinh viên?
    Gửi bởi hoainamken trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 24-08-2011, 10:34 AM
  4. Kỹ thuật C Quản lí Sinh Viên Bằng Danh Sách liên kết trong lập trình C
    Gửi bởi kitti trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 6
    Bài viết cuối: 01-04-2011, 09:17 PM
  5. [VC++ ] Danh sáchh liên kết - BT quản lí điểm sinh viên.
    Gửi bởi vuongngocnam trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 3
    Bài viết cuối: 14-04-2010, 11:28 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn