Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <list>
- struct Student
- {
- std::string name;
- std::string group;
- unsigned short book;
- unsigned short marks[4];
- };
- struct ListIterator
- {
- Student s;
- ListIterator *prev = nullptr;
- ListIterator *next = nullptr;
- };
- void swap(Student &s1, Student &s2)
- {
- Student tmp(s1); // copy
- s1 = std::move(s2);
- s2 = std::move(tmp);
- }
- void swap(ListIterator &l, ListIterator &r)
- {
- ListIterator *lPrev = l.prev;
- ListIterator *lNext = l.next;
- ListIterator *rPrev = r.prev;
- ListIterator *rNext = r.next;
- if (l.prev != nullptr) {
- l.prev->next = &r;
- }
- if (l.next != nullptr) {
- l.next->prev = &r;
- }
- if (r.prev != nullptr) {
- r.prev->next = &l;
- }
- if (r.next != nullptr) {
- r.next->prev = &l;
- }
- l.prev = rPrev;
- l.next = rNext;
- r.prev = lPrev;
- r.next = lNext;
- }
- void sort(ListIterator &start) {
- while () {
- }
- for (auto it0 = l.begin(); it0 != l.end(); it0++) {
- Student *min = &(*it0);
- for (auto it1 = it0; it1 != l.end(); it1++) {
- if (it1->name < min->name) {
- min = &(*it1);
- }
- }
- swap(*min, *it0);
- }
- }
- int main() {
- ListIterator *startIterator;
- size_t n;
- std::cin >> n;
- for (size_t i = 0; i < n; i++) {
- auto s = new Student;
- std::cin.ignore();
- std::getline(std::cin, s->name);
- std::getline(std::cin, s->group);
- std::cin >> s->book;
- for (size_t j = 0; j < 4; j++) {
- std::cin >> s->marks[j];
- }
- }
- sort(l);
- for (auto &it : l) {
- std::cout << it.name << std::endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement