Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- using namespace std;
- struct dlist
- {
- int info;
- dlist *prev, *next;
- };
- int main()
- {
- int k = 0; //проверка на случай наличия одного элемента в спике
- //объявление головы списка
- int x;
- cin >> x; k++;
- dlist *head = new dlist;
- head->info = x;
- head->prev = nullptr; head->next = nullptr;
- dlist *p = new dlist;
- p = head;
- //ввод тела списка
- cin >> x;
- while(x!=0)
- {
- k++;
- dlist *r = new dlist;
- r->info = x; r->prev=nullptr; r->next=nullptr;
- p->next = r;
- r->prev=p;
- p = r;
- cin >> x;
- }
- if(k==1){cout << "В списке недостаточное количество элементов"; return 0;}
- //проверка на убывание
- int f = 1;
- p = head->next;
- while(p!=nullptr)
- {
- if(p->info>=p->prev->info){f = 0; break;}
- p=p->next;
- }
- if(f == 1)
- {
- p = head->next;
- while(p!=nullptr)
- {
- if(p->info%5==0&&p->prev->info%5==0)
- {
- int x = p->info + p->prev->info;
- dlist *r = new dlist;
- r->info = x;
- r->prev = p->prev;
- r->next = p;
- p->prev->next = r;
- p->prev = r;
- }
- p = p->next;
- }
- }
- else {
- int a, b;
- cout << "a: ";
- cin >> a;
- cout << "b: ";
- cin >> b;
- p = head;
- while (p != nullptr) {
- if (p->next == nullptr) { break; }
- if (p->info >= a && p->info <= b) {
- dlist *r;
- if (p->next->next != nullptr) //... p y z NULL
- {
- r = p->next;
- p->next = p->next->next;
- p->next->prev = p;
- r->next = nullptr;
- r->prev = nullptr;
- delete r;
- p = p->next;
- } else if (p->next != nullptr)//... p y NULL
- {
- r = p->next;
- p->next = nullptr;
- r->next = nullptr;
- r->prev = nullptr;
- delete r;
- p = p->next;
- } else {
- p = p->next;
- }
- } else {
- p = p->next;
- }
- }
- }
- //вывод списка
- p = head;
- while(p!=nullptr)
- {
- cout << p->info << " ";
- p = p->next;
- }
- //удаление списка
- while(head!=nullptr)
- {
- dlist *r = head;
- head = head->next;
- delete r;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement