Advertisement
Toliak

heh

Oct 26th, 2018
315
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.79 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <list>
  4.  
  5.  
  6.  
  7. struct Student
  8. {
  9.     std::string name;
  10.     std::string group;
  11.     unsigned short book;
  12.     unsigned short marks[4];
  13. };
  14.  
  15. struct ListIterator
  16. {
  17.     Student s;
  18.     ListIterator *prev = nullptr;
  19.     ListIterator *next = nullptr;
  20. };
  21.  
  22. void swap(Student &s1, Student &s2)
  23. {
  24.     Student tmp(s1);        // copy
  25.     s1 = std::move(s2);
  26.     s2 = std::move(tmp);
  27. }
  28.  
  29. void swap(ListIterator &l, ListIterator &r)
  30. {
  31.     ListIterator *lPrev = l.prev;
  32.     ListIterator *lNext = l.next;
  33.     ListIterator *rPrev = r.prev;
  34.     ListIterator *rNext = r.next;
  35.  
  36.     if (l.prev != nullptr) {
  37.         l.prev->next = &r;
  38.     }
  39.     if (l.next != nullptr) {
  40.         l.next->prev = &r;
  41.     }
  42.  
  43.     if (r.prev != nullptr) {
  44.         r.prev->next = &l;
  45.     }
  46.     if (r.next != nullptr) {
  47.         r.next->prev = &l;
  48.     }
  49.  
  50.     l.prev = rPrev;
  51.     l.next = rNext;
  52.     r.prev = lPrev;
  53.     r.next = lNext;
  54. }
  55.  
  56.  
  57. void sort(ListIterator &start) {
  58.     while () {
  59.  
  60.     }
  61.     for (auto it0 = l.begin(); it0 != l.end(); it0++) {
  62.         Student *min = &(*it0);
  63.         for (auto it1 = it0; it1 != l.end(); it1++) {
  64.             if (it1->name < min->name) {
  65.                 min = &(*it1);
  66.             }
  67.         }
  68.         swap(*min, *it0);
  69.     }
  70. }
  71.  
  72. int main() {
  73.     ListIterator *startIterator;
  74.  
  75.     size_t n;
  76.     std::cin >> n;
  77.     for (size_t i = 0; i < n; i++) {
  78.         auto s = new Student;
  79.  
  80.         std::cin.ignore();
  81.         std::getline(std::cin, s->name);
  82.         std::getline(std::cin, s->group);
  83.         std::cin >> s->book;
  84.         for (size_t j = 0; j < 4; j++) {
  85.             std::cin >> s->marks[j];
  86.         }
  87.     }
  88.  
  89.     sort(l);
  90.     for (auto &it : l) {
  91.         std::cout << it.name << std::endl;
  92.     }
  93.  
  94.     return 0;
  95. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement