Advertisement
llvlleo1810

danh sách sinh viên (ds liên kết đơn)

Apr 17th, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.71 KB | None | 0 0
  1. (tạo menu nhập vào danh sách sinh viên.
  2. -> chèn vào đầu danh sách
  3. ->chèn vào cuối danh sách
  4. -> chèn vào 1 vị trí bất kỳ
  5.  
  6. -> xóa sinh viên ở đâu
  7. -> xóa sinh viên ở cuối
  8. -> xóa sinh viên ở 1 vị trí bất kỳ
  9.  
  10. -> sắp xếp sinh viên theo tên)
  11.  
  12.  
  13. #include<iostream>
  14. #include <string>
  15. using namespace std;
  16.  
  17. struct sinhvien{
  18.  string ten;
  19. };
  20. struct Node{
  21.  sinhvien *data;
  22.  Node *next;
  23. };
  24.  
  25. Node * dau;
  26. Node * cuoi;
  27.  
  28. void khoitao(){
  29.  dau = cuoi = NULL;
  30. }
  31.  
  32. void themcuoi(Node * node){
  33.  if(dau == NULL){
  34.   dau = cuoi = node;
  35.  }
  36.  else{
  37.   cuoi -> next = node;
  38.   cuoi = node;
  39.  }
  40. }
  41.  
  42. Node *getNode(string x){
  43.  Node *p = new Node();
  44.  p -> data = new sinhvien();
  45.  p -> data -> ten = x;
  46.  p -> next = NULL;
  47.  return p;
  48. }
  49.  
  50. void input(){
  51.  int n;
  52.  cout << "nhap so sinhvien ";
  53.  cin >> n;
  54.  cin.ignore();
  55.  khoitao();
  56.  for(int i = 1; i <= n; i++){
  57.   string x;
  58.   cout << "nhap vao ten sinh vien: [" << i << "] = ";
  59.   getline(cin, x);
  60.   Node *p = getNode(x);
  61.   themcuoi(p);
  62.  }
  63. }
  64.  
  65. void in(){
  66.  Node *p = dau;
  67.  cout << endl;
  68.  while( p != NULL){
  69.   cout << p -> data -> ten << " " << endl;
  70.   p = p -> next;
  71.  }
  72. }
  73.  
  74. // dau = 1 -> 2 -> 3
  75. //dau = 2 -> 3
  76. void xoadau(){
  77.  Node *p = dau;
  78.  dau = dau ->next;
  79.  p = NULL;
  80. }
  81.  
  82. void xoacuoi(){
  83.  for(Node *i = dau; i != cuoi; i = i -> next){
  84.   if(i -> next == cuoi){
  85.    cuoi = i;
  86.    i -> next = NULL;
  87.    break;
  88.   }
  89.  }
  90. }
  91.  
  92.  
  93. //1 2 -> 3 -> 4 5 6
  94. //1 -> 2 -> 4 -> 5 -> 6
  95. void xoa(int k){
  96.  int index = 1;
  97.  for(Node *i = dau; i != cuoi; i = i -> next){
  98.   if(index == k){
  99.    i -> next =  i -> next -> next;
  100.    break;
  101.   }
  102.   index ++;
  103.  }
  104. }
  105.  
  106. void chendau(){
  107.  string x;
  108.  cout << "nhap vao ten sinh vien chen vao dau: ";
  109.  cin.ignore();
  110.  getline(cin, x);
  111.  Node *p = getNode(x);
  112.  if(dau == NULL){
  113.   dau = cuoi = p;
  114.  }
  115.  else{
  116.   p -> next = dau;
  117.   dau = p;
  118.  }
  119. }
  120. //1 ->2 -> 4 ->5
  121. //3
  122. //1 ->2 ->3 -> 4 ->5
  123. void chenbatky(int k){
  124.  string x;
  125.  cout << "nhap vao ten sinh vien chen vao bat ky: ";
  126.  cin.ignore();
  127.  getline(cin, x);
  128.  Node *p = getNode(x);
  129.  int index = 1;
  130.  Node *q = dau;
  131.  for(Node * i = dau; i != cuoi; i= i->next){
  132.   if(index == k){
  133.    Node *tmp = q -> next;
  134.    q -> next = p;
  135.    p -> next = tmp;
  136.    break;
  137.   }
  138.   q = q -> next;
  139.   index ++;
  140.  }
  141. }
  142.  
  143. void chencuoi(){
  144.  string x;
  145.  cout <<"nhap vao ten sinh vien chen vao cuoi: "<< endl;
  146.  cin.ignore();
  147.  getline(cin,x);
  148.  Node *p = getNode(x);
  149.  themcuoi(p);
  150. }
  151.  
  152. void hoanvi(Node *a, Node *b){
  153.  sinhvien *tmp = b -> data;
  154.  b->data = a->data;
  155.  a->data = tmp;
  156. }
  157.  
  158. void sapxep(){
  159.  for(Node *i = dau; i != cuoi; i = i -> next){
  160.   for(Node *j = i -> next; j != NULL; j = j -> next){
  161.    if( i -> data -> ten.compare(j -> data -> ten) > 0){
  162.     hoanvi(i , j);
  163.    }
  164.   }
  165.  }
  166. }
  167.  
  168. int main(){
  169.  
  170.  input();
  171.  in();
  172.  while(true){
  173.   system("cls");
  174.   cout << "0. exit " << endl;
  175.   cout<<"1. them vao dau danh sach "<< endl;
  176.   cout <<"2. them vao cuoi danh sach "<< endl;
  177.   cout << "3. them vao vi tri bat ky "<< endl;
  178.   cout << "4. xoa dau danh sach "<<endl;
  179.   cout << "5. xoa cuoi danh sach "<<endl;
  180.   cout << "6. xoa vi tri bat ky "<< endl;
  181.   cout << "7. sap xep theo ten "<< endl;
  182.   int x;
  183.   cin >> x;
  184.   switch(x){
  185.    case 0: return 0;
  186.    case 1: chendau();
  187.      in();
  188.      break;
  189.    case 2: chencuoi();
  190.      in();
  191.      break;
  192.    case  3: int k;
  193.      cout << "nhap vi tri chen: "<< endl;
  194.      cin >> k;
  195.      chenbatky(k);
  196.      in();
  197.      break;
  198.    case 4: xoadau();
  199.      in();
  200.      break;
  201.    case 5: xoacuoi();
  202.      in();
  203.      break;
  204.    case 6: int l;
  205.      cout << "nhap vao vi tri xoa " << endl;
  206.      cin >> l;
  207.      xoa(l);
  208.      in();
  209.      break;
  210.    case 7: sapxep();
  211.      in();
  212.      break;
  213.   }
  214.   system("pause");
  215.  }
  216.  
  217. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement