Advertisement
Guest User

Untitled

a guest
Apr 25th, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.55 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.     for (int i = 0; i < n; i++) {
  66.         int q;
  67.         cin >> q;
  68.         push(l_h, l_t, q);
  69.        
  70.         if (q > max_el) {
  71.             max_el = q;
  72.         }
  73.         if (q < min_el) {
  74.             min_el = q;
  75.         }
  76.     }
  77.    
  78.     list *el = l_h;
  79.     while (el) {
  80.         if (el->inf == max_el) {
  81.             insert_after(l_h, l_t, el, min_el);
  82.             el = el->next;
  83.         }
  84.         el = el->next;
  85.     }
  86.    
  87.     print(l_h, l_t);
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement