Advertisement
Guest User

Untitled

a guest
Apr 25th, 2018
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.58 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