fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. struct SV{
  4. int msv;
  5. char hodem[30];
  6. char ten[10];
  7. char gioitinh[10];
  8. int namsinh;
  9. double diemtk;
  10. };
  11. struct Node{
  12. SV infor;
  13. Node*next;
  14. };
  15. typedef Node*TRO;
  16. void create(TRO &L){
  17. L=NULL;
  18. }
  19. int empty(TRO &L){
  20. return(L==NULL);
  21. }
  22. SV taosv(int ma,char hd[30],char t[10],char gt[10],int y,double d){
  23. SV sv;
  24. sv.msv=ma;
  25. strcpy(sv.hodem,hd);
  26. strcpy(sv.ten,t);
  27. strcpy(sv.gioitinh,gt);
  28. sv.namsinh=y;
  29. sv.diemtk=d;
  30. return sv;
  31. }
  32. void display(SV sv){
  33. cout<<fixed;
  34. cout<<setw(8)<<left<<sv.msv;
  35. cout<<setw(10)<<sv.hodem;
  36. cout<<setw(9)<<sv.ten;
  37. cout<<setw(8)<<sv.gioitinh;
  38. cout<<setw(10)<<right<<sv.namsinh;
  39. cout<<setw(10)<<setprecision(2)<<sv.diemtk;
  40. cout<<endl;
  41. }
  42. //chen 1 node vao cuoi ds
  43. void add(TRO &L ,SV sv){
  44. TRO P, Q=L;
  45. P=new Node;
  46. P->infor=sv;
  47. P->next=NULL;
  48. if(empty(L)){
  49. L=P;
  50. }
  51. else{
  52. while(Q->next!=NULL)
  53. Q=Q->next;
  54. Q->next=P;
  55. }
  56. }
  57. //tao 1 ds moi
  58. void create_List(TRO &L){
  59. add(L,taosv(1001,"tran van","thanh ","nam",1997,7.5));
  60. add(L,taosv(1002,"nguyen thi","hong ","nu",1998,7.2));
  61. add(L,taosv(1003,"nguyen van","hung ","nam",1996,6.4));
  62. add(L,taosv(1004,"bui thi","bich ","nu",1998,8.6));
  63. add(L,taosv(1005,"duong van","giang ","nam",1997,6.8));
  64. }
  65. void showList(TRO L){
  66. TRO Q;
  67. if(!empty(L)){
  68. cout<<fixed;
  69. cout<<setw(8)<<left<<"Ma sv";
  70. cout<<setw(10)<<"ho dem ";
  71. cout<<setw(15)<<"ten ";
  72. cout<<setw(15)<<"gioi tinh";
  73. cout<<setw(15)<<right<<"nam sinh";
  74. cout<<setw(10)<<"Diem tk";
  75. cout<<endl;
  76. Q=L;
  77. while(Q!=NULL){
  78. display(Q->infor);
  79. Q=Q->next;
  80. }
  81. }
  82. else{
  83. cout<<"danh sach rong"<<endl;
  84. }
  85. }
  86. void xoa_pt(TRO &L){
  87. if(empty(L)){
  88. cout<<"Danh sach rong"<<endl;
  89. return;
  90. }
  91. TRO Q=L;
  92. L=L->next;
  93. delete Q;
  94. cout<<"==========danh sach sau khi xoa=========="<<endl;
  95. showList(L);
  96. }
  97. //ham tim vi tri thu k-1
  98. TRO search_k(TRO L,int k){
  99. int d=1;
  100. TRO Q=L;
  101. while(d<k-1 && Q->next !=NULL){
  102. d++;
  103. Q=Q->next;
  104. }
  105. if(d<k-1){
  106. return NULL;
  107. }
  108. return Q;
  109. }
  110. //void chen
  111. void insert(TRO &L,TRO Q,SV sv){
  112. TRO P;
  113. P=new Node;
  114. P->infor=sv;
  115. P->next=Q->next;
  116. Q->next=P;
  117. }
  118. void chen_vtri(TRO &L){
  119. TRO Q=search_k(L,3);
  120. if(Q==NULL){
  121. cout<<"khong the chen"<<endl;
  122. return;
  123. }
  124. insert(L,Q,taosv(1006,"le thi","doan","nu",1998,7.6));
  125. cout<<"=============danh sach sau khi chen========="<<endl;
  126. showList(L);
  127. }
  128. void selectionSort(TRO L){
  129. TRO P,Q,M;
  130. P=L;
  131. while(P->next!=NULL){
  132. M=P;
  133. Q=P->next;
  134. while(Q!=NULL){
  135. if(strcmp(Q->infor.ten,M->infor.ten)<0){
  136. M=Q;
  137. }
  138. Q=Q->next;
  139. }
  140. SV tg=P->infor;
  141. P->infor=M->infor;
  142. M->infor=tg;
  143. P=P->next;
  144. }
  145. cout<<"===========danh sach sau khi sap xep=========="<<endl;
  146. showList(L);
  147. }
  148. int main(int argc,char const*argv[]){
  149. TRO L;
  150. create(L);
  151. create_List(L);
  152. cout<<"===========danh sach vua tao========"<<endl;
  153. showList(L);
  154. xoa_pt(L);
  155. // cout<<"===========danh sach sau khi xoa=========="<<endl;
  156. //showList(L);
  157. chen_vtri(L);
  158. // cout<<"===========danh sach sau khi chen========"<<endl;
  159. // showList(L);
  160. selectionSort(L);
  161. // cout<<"===========danh sach sau khi sap========"<<endl;
  162. // showList(L);
  163. return 0;
  164. }
Success #stdin #stdout 0.01s 5280KB
stdin
Standard input is empty
stdout
===========danh sach vua tao========
Ma sv   ho dem    ten            gioi tinh             nam sinh   Diem tk
1001    tran van  thanh    nam           1997      7.50
1002    nguyen thihong     nu            1998      7.20
1003    nguyen vanhung     nam           1996      6.40
1004    bui thi   bich     nu            1998      8.60
1005    duong van giang    nam           1997      6.80
==========danh sach sau khi xoa==========
Ma sv   ho dem    ten            gioi tinh             nam sinh   Diem tk
1002    nguyen thihong     nu            1998      7.20
1003    nguyen vanhung     nam           1996      6.40
1004    bui thi   bich     nu            1998      8.60
1005    duong van giang    nam           1997      6.80
=============danh sach sau khi chen=========
Ma sv   ho dem    ten            gioi tinh             nam sinh   Diem tk
1002    nguyen thihong     nu            1998      7.20
1003    nguyen vanhung     nam           1996      6.40
1006    le thi    doan     nu            1998      7.60
1004    bui thi   bich     nu            1998      8.60
1005    duong van giang    nam           1997      6.80
===========danh sach sau khi sap xep==========
Ma sv   ho dem    ten            gioi tinh             nam sinh   Diem tk
1004    bui thi   bich     nu            1998      8.60
1006    le thi    doan     nu            1998      7.60
1005    duong van giang    nam           1997      6.80
1002    nguyen thihong     nu            1998      7.20
1003    nguyen vanhung     nam           1996      6.40