Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- #include <string>
- #include <vector>
- #include <algorithm>
- using namespace std;
- struct list {
- int inf;
- list *next;
- list *prev;
- };
- void push(list *&h, list *&t, int x) {
- list *r = new list;
- r->inf = x;
- r->next = NULL;
- if (!h && !t) {
- r->prev = NULL;
- h = r;
- } else {
- t->next = r;
- r->prev = t;
- }
- t = r;
- }
- void insert_after(list *&h, list *&t, list *r, int y) {
- list *p = new list;
- p->inf = y;
- if (r == t){
- p->next = NULL;
- p->prev = r;
- r->next = p;
- t = p;
- } else {
- r->next->prev = p;
- p->next = r->next;
- p->prev = r;
- r->next = p;
- }
- }
- void print(list *h, list *t) {
- list *p = h;
- while (p) {
- cout << p->inf << " ";
- p = p->next;
- }
- cout << endl;
- }
- void main() {
- setlocale(LC_ALL, "Russian");
- list *l_h = NULL, *l_t = NULL;
- int n;
- cin >> n;
- int max_el = -10000000;
- int min_el = 10000000;
- // считываем элементы
- for (int i = 0; i < n; i++) {
- int q;
- cin >> q;
- push(l_h, l_t, q);
- // ищем максимальный
- if (q > max_el) {
- max_el = q;
- }
- // ищем минимальный
- if (q < min_el) {
- min_el = q;
- }
- }
- // идём по списку
- list *el = l_h;
- while (el) {
- // если нашли максимальный элемент - вставляем после него минимальный
- if (el->inf == max_el) {
- insert_after(l_h, l_t, el, min_el);
- el = el->next;
- }
- el = el->next;
- }
- // выводим получившийся список
- print(l_h, l_t);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement