Advertisement
Guest User

Untitled

a guest
Apr 25th, 2018
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.90 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. #include <string>
  4. #include <vector>
  5. #include <algorithm>
  6.  
  7. using namespace std;
  8.  
  9. struct list {
  10.     int inf;
  11.     list *next;
  12.     list *prev;
  13. };
  14.  
  15. void push(list *&h, list *&t, int x) {
  16.     list *r = new list;
  17.     r->inf = x;
  18.     r->next = NULL;
  19.     if (!h && !t) {
  20.         r->prev = NULL;
  21.         h = r;
  22.     } else {
  23.         t->next = r;
  24.         r->prev = t;
  25.     }
  26.     t = r;
  27. }
  28.  
  29. void insert_after(list *&h, list *&t, list *r, int y) {
  30.     list *p = new list;
  31.     p->inf = y;
  32.     if (r == t){
  33.         p->next = NULL;
  34.         p->prev = r;
  35.         r->next = p;
  36.         t = p;
  37.     } else {
  38.         r->next->prev = p;
  39.         p->next = r->next;
  40.         p->prev = r;
  41.         r->next = p;
  42.     }
  43. }  
  44.  
  45. void print(list *h, list *t) {
  46.     list *p = h;
  47.     while (p) {
  48.         cout << p->inf << " ";
  49.         p = p->next;
  50.     }
  51.     cout << endl;
  52. }
  53.  
  54. void main() {
  55.     setlocale(LC_ALL, "Russian");
  56.    
  57.     list *l_h = NULL, *l_t = NULL;
  58.    
  59.     int n;
  60.     cin >> n;
  61.    
  62.     int max_el = -10000000;
  63.     int min_el = 10000000;
  64.    
  65.    // считываем элементы
  66.     for (int i = 0; i < n; i++) {
  67.         int q;
  68.         cin >> q;
  69.         push(l_h, l_t, q);
  70.        
  71.         // ищем максимальный
  72.         if (q > max_el) {
  73.             max_el = q;
  74.         }
  75.         // ищем минимальный
  76.         if (q < min_el) {
  77.             min_el = q;
  78.         }
  79.     }
  80.    
  81.    // идём по списку
  82.     list *el = l_h;
  83.     while (el) {
  84.         // если нашли максимальный элемент - вставляем после него минимальный
  85.         if (el->inf == max_el) {
  86.             insert_after(l_h, l_t, el, min_el);
  87.             el = el->next;
  88.         }
  89.         el = el->next;
  90.     }
  91.    
  92.    // выводим получившийся список
  93.     print(l_h, l_t);
  94. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement