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

Đề tài: Danh sách liên kết đơn quản lý sinh viên

  1. #1
    Ngày gia nhập
    01 2016
    Bài viết
    10

    Mặc định Danh sách liên kết đơn quản lý sinh viên

    M.N cho mình hỏi, bài này mình code sai chỗ nào mà nhập n sinh viên nó chỉ in ra thông tin của sinh viên cuối cùng. Chỉ hỏi thế thôi rồi mấy hàm khác có sai mình sẽ nghiên cứu tiếp. Thanks ACE nhiều a!

    DSLKD_QLDSSV.cpp

  2. #2
    Ngày gia nhập
    09 2015
    Nơi ở
    nghệ an
    Bài viết
    3

    HÀM makenode() của bạn có vấn đề nhé.

    - hàm đó phải có kiểu trả về là SinhVien
    ---> mình nghĩ bạn nên viết lại hàm đó.. vì P là 1 node mà node lại chứa dữ liệu là SinhVien và 1 con trỏ pnext. Mà bạn lại viết hàm trả về Kiểu SinhVien bên trong lại tạo ra node.

  3. #3
    Ngày gia nhập
    04 2017
    Bài viết
    15

    C Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3. #include<stdlib.h>
    4. #include<string.h>
    5. struct sinhvien{
    6.     char hoten[30];
    7.     bool gt;
    8.     char lop[10];
    9.     char qq[30];
    10.     int hk;
    11. };
    12. struct Node{
    13.     sinhvien *data;
    14.     struct Node *next;
    15. };
    16. typedef Node *List;
    17. Node *L=NULL, *P=NULL, *Q=NULL;
    18. void Init (List &L) {
    19.     L=NULL;
    20. }
    21. int Isempty (List &L){
    22.     if(L==NULL){
    23.         return 1;
    24.     }
    25.     return 0;
    26. }
    27. int len(List &L)
    28. {
    29.     Node *P=L;
    30.     int i=0;
    31.     while (P!=NULL)
    32.     {
    33.         i++;
    34.         P=P->next;
    35.     }
    36.     return i;
    37. }
    38. sinhvien Make_Node(){
    39.     P = (Node*)malloc(sizeof(Node));
    40.     fflush(stdin);
    41.     printf("\nNhap ho ten: ");
    42.     gets(P->data->hoten);
    43.     do{
    44.         printf("Nhap gioi tinh (nam=1 & nu=0): ");
    45.         scanf("%d",&(P->data->gt));
    46.     }while(P->data->gt>1 || P->data->gt<0);
    47.     printf("Nhap lop: ");
    48.     fflush(stdin);
    49.     gets(P->data->lop);
    50.     printf("Nhap que quan: ");
    51.     gets(P->data->qq);
    52.     do{
    53.         printf("\nNhap hanh kiem: ");
    54.         printf("\nChon: 1=yeu, 2=trung binh, 3=kha, 4=tot, 5= xuat sac: ");
    55.         scanf("%d",&(P->data->hk));
    56.     }while(P->data->hk>5 || P->data->hk<1);
    57.     P->next=NULL;
    58. }
    59. void Insert_first(List &L){
    60.     Make_Node();
    61.     if(L == NULL) L = P;
    62.     else{
    63.         P->next = L;
    64.         L = P;
    65.     }
    66. }
    67. void Insert_end(List &L){
    68.     Make_Node();
    69.     if(L == NULL){
    70.         L = P;
    71.     }
    72.     else{
    73.         Q = L;
    74.         while(Q->next != NULL){
    75.             Q = Q->next;
    76.         }
    77.         Q->next = P;
    78.     }
    79. }
    80. void Insert_k (List &L, int k) {
    81.     Node *Q = L;
    82.     int i=1;
    83.     if (k<1 || k> len(L)) printf("Vi tri chen khong hop le !");
    84.     else
    85.     {
    86.         Make_Node();
    87.         if (k == 1) Insert_first(L);
    88.         else
    89.         {
    90.             while (Q != NULL && i <= k-1)
    91.             {
    92.                 i++;
    93.                 Q = Q->next;
    94.             }
    95.             P->next = Q->next;
    96.             Q->next = P;
    97.         }
    98.     }
    99. }
    100. void search_hk(List &L){
    101.     Node *P= L;
    102.     int i=1;
    103.     while(P!=NULL && P->data->hk>=4){
    104.             printf("\n-----Thong tin sinh vien thu %d co HK tot tro len-----",i);
    105.             printf("\nHo Ten: %s",P->data->hoten);
    106.             printf("\nGioi Tinh: %s",(P->data->gt==1)? "Nam":"Nu");
    107.             printf("\nLop: %s ",P->data->lop);
    108.             printf("\nQue quan: %s",P->data->qq);
    109.             printf("\nHanh kiem: %s",P->data->hk);
    110.         P=P->next;
    111.         i++;
    112.     }
    113. }
    114. int count_qq(List &L){
    115.     Node *P=L;
    116.     int i=1,sum=0;
    117.     while(P!=NULL && ((strcmp(P->data->qq,"Vung Tau")!=0)||(strcmp(P->data->qq,"vung tau")!=0)
    118.          ||(strcmp(P->data->qq,"VUNG TAU")!=0))){
    119.         sum++;
    120.         P=P->next;
    121.         i++;
    122.     }
    123.     return sum;
    124. }
    125. void Outp_nu(List &L){
    126.     Node *P=L;
    127.     int i=1;
    128.     while(P!=NULL && P->data->gt!=0 && ((strcmp(P->data->lop,"K14A MMT")!=0)||(strcmp(P->data->lop,"k14a mmt")!=0))){
    129.         printf("\n-----Sinh vien nu lop K14A MMT thu %d----- ",i);
    130.         printf("\nHo Ten: %s",P->data->hoten);
    131.         printf("\nGioi Tinh: %s",(P->data->gt==1)? "Nam":"Nu");
    132.         printf("\nLop: %s ",P->data->lop);
    133.         printf("\nQue quan: %s",P->data->qq);
    134.         if(P->data->hk==1) printf("\nHanh kiem yeu");
    135.         else if(P->data->hk==2) printf("\nHanh kiem trung binh");
    136.         else if(P->data->hk==3) printf("\nHanh kiem kha");
    137.         else if(P->data->hk==4) printf("\nHanh kiem tot");
    138.         else  printf("\nHanh kiem xuat sac");
    139.         i++;
    140.         P=P->next;
    141.     }
    142. }
    143. void Tach(List &L){
    144.     Node *Q1, *L1=NULL;
    145.     while(L != NULL && L->data->hk !=1){
    146.         if(L1 == NULL){
    147.             L1 = L;
    148.             L = L->next;
    149.             L1->next = NULL;           
    150.         }  
    151.         else{
    152.             Q1 = L1;
    153.             while(Q1->next != NULL){
    154.                 Q1  = Q1->next;
    155.             }
    156.             Q1->next = L;
    157.             L = L->next;
    158.             Q1->next->next = NULL;
    159.         }      
    160.     }
    161.     P = L;
    162.     Q = L->next;
    163.     while(Q != NULL){
    164.         if(Q->data->hk==1){
    165.             if(L1 == NULL){
    166.                 L1 = Q;
    167.                 Q = Q->next;
    168.                 P->next = Q;
    169.                 L1->next = NULL;
    170.             }
    171.             else{
    172.                 Node *P1;
    173.                 P1 = L1;
    174.                 while(P1->next!=NULL){
    175.                     P1 = P1->next;
    176.                 }
    177.                 P1->next = Q;
    178.                 Q = Q->next;
    179.                 P->next = Q;
    180.                 P1->next->next = NULL;
    181.             }
    182.         }
    183.         else{
    184.             P = Q;
    185.             Q = Q->next;
    186.         }          
    187.     }
    188.     int i = 1;
    189.     Q1 = L1;
    190.     while(Q1!=NULL){
    191.         printf("\nThong Tin Sinh Vien Thu %d : ",i);
    192.         printf("\nHo Ten: %s",P->data->hoten);
    193.         printf("\nGioi Tinh: %s",(P->data->gt==1)? "Nam":"Nu");
    194.         printf("\nLop: %s ",P->data->lop);
    195.         printf("\nQue quan: %s",P->data->qq);
    196.         if(P->data->hk==1) printf("\nHanh kiem yeu");
    197.         else if(P->data->hk==2) printf("\nHanh kiem trung binh");
    198.         else if(P->data->hk==3) printf("\nHanh kiem kha");
    199.         else if(P->data->hk==4) printf("\nHanh kiem tot");
    200.         else  printf("\nHanh kiem xuat sac");
    201.         Q1 = Q1->next;
    202.         i++;
    203.     }
    204. }
    205. void Output(List &L){
    206.     int i = 1;
    207.     P=L;
    208.     printf("\nThong Tin Sinh Vien :");
    209.     while(P != NULL){
    210.         printf("\nThong Tin Sinh Vien Thu %d : ",i);
    211.         printf("\nHo Ten: %s",P->data->hoten);
    212.         printf("\nGioi Tinh: %s",(P->data->gt==1)? "Nam":"Nu");
    213.         printf("\nLop: %s ",P->data->lop);
    214.         printf("\nQue quan: %s",P->data->qq);
    215.         printf("\nHanh kiem : ");
    216.         if(P->data->hk==1) printf("yeu");
    217.         else if(P->data->hk==2) printf("trung binh");
    218.         else if(P->data->hk==3) printf("kha");
    219.         else if(P->data->hk==4) printf("tot");
    220.         else printf("xuat sac");
    221.         P = P->next;
    222.         i++;
    223.     }
    224. }
    225. int main(){
    226.     Init (L);
    227.     int k,chon,n;
    228.     printf("\nMenu: ");
    229.     do{
    230.         printf("\n1-Nhap danh sach sinh vien");
    231.         printf("\n2-In danh sach sinh vien");
    232.         printf("\n3-Chen 1 sinh vien vao vi tri k");
    233.         printf("\n4-Hien thi tat ca sv co hanh kiem tot tro len");
    234.         printf("\n5-Tach sv co hanh kiem yeu ra 1 danh sach rieng");
    235.         printf("\n6-Dem so luong sinh vien que tai'Vung Tau'");
    236.         printf("\n7-Hien thi tat ca sv nu cua lop 'K14A MMT'");
    237.         printf("\n0-Thoat \n");
    238.         scanf("%d",&chon);
    239.         switch(chon){
    240.             case 1:
    241.                 do{
    242.                     printf("\nNhap so luong sv: ");
    243.                     scanf("%d",&n);
    244.                     }while(n<=0);
    245.                 for(int i=1;i<=n;i++){
    246.                     printf("\nNhap thong tin sinh vien thu %d: ",i);
    247.                     Insert_first(L);
    248.                 }
    249.                 break;
    250.             case 2:
    251.             if(Isempty (L)){
    252.                     printf("\nDanh sach rong!\n");
    253.                 }
    254.                 else{
    255.                     Output(L);
    256.                 }
    257.                 break;
    258.             case 3:
    259.                 if(Isempty (L)) printf("\nDanh sach rong!\n");
    260.                 else{
    261.                     printf("\nNhap vi tri can chen : ");
    262.                     scanf("%d",&k);
    263.                     printf("\nNhap thong tin sinh vien can chen: \n");
    264.                     Insert_k (L,k);
    265.                 }
    266.                 break;
    267.             case 4:
    268.                 if(Isempty (L)) printf("\nDanh sach rong!\n");
    269.                 else search_hk(L);
    270.                 break;
    271.             case 5:
    272.                 if(Isempty (L)) printf("\nDanh sach rong!\n");
    273.                 else    Tach(L);
    274.                 break;
    275.             case 6:
    276.                 char x[30];
    277.                 if(Isempty (L)) printf("\nDanh sach rong!\n");
    278.                 else{
    279.                     printf("\nSo luong sinh vien que tai %s = %d",x,count_qq(L));
    280.                 }
    281.                 break;
    282.             case 7:
    283.                 if(Isempty (L)) printf("\nDanh sach rong!\n");
    284.                 else{
    285.                     Outp_nu(L);
    286.                 }
    287.                 break;
    288.             case 0: exit(1);
    289.             default: printf("\nNhap sai vui long nhap lai! \n");
    290.         }
    291.     }while(chon!=0);
    292.     return 1;
    293.     getch();
    294. }
    Thuê code đồ án, bài tập, tools. phần mềm liên hệ:
    Facebook: http://www.facebook.com/thuecodedoan
    Website: https://thuecodedoan.wordpress.com
    Email: thuecodedoan@gmail.com
    Sđt: 094.76.76.854

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