Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //-----------------------------------------------------------------------------------------
- #include <iostream>
- #include <time.h>
- using namespace std;
- //------------------Структура-----------------------------------------------------------
- struct Ochd {
- int info;
- Ochd *next, *prev;
- } *t, *p;
- //------------------Прототипы-----------------------------------------------------------
- Ochd *AddOchd (Ochd *, Ochd **, int);
- Ochd *Addbegin (Ochd *, Ochd **, int);
- void View (Ochd *);
- void Dell_All (Ochd *);
- Ochd *Select(Ochd *, Ochd **, Ochd *, Ochd **);
- void View_back (Ochd *);
- Ochd *FindAndDell(Ochd *begin1, int F_el);
- //-----------------------------------------------------------------------------------------
- Ochd *AddOchd (Ochd *begin1, Ochd **end, int in) {
- t = new Ochd;
- t->info = in;
- t->next = NULL;
- t->prev = (*end);
- if ((*end) == NULL) begin1 = t;
- else (*end)->next = t;
- (*end) = t;
- return begin1;
- }
- //---------------------------Просмотр------------------------------------------------------
- void View (Ochd *p) {
- while (p != NULL) {
- if ((p->info) < 0)
- cout << p->info << endl;
- else cout << " " << p->info << endl;
- p = p->next;
- }
- }
- //------------------Просмотр наоборот---------------------------------------------------
- void View_back (Ochd *p) {
- while (p != NULL) {
- if ((p->info) < 0)
- cout << p->info << endl;
- else cout << " " << p->info << endl;
- p = p->prev;
- }
- }
- //-----------------------------------Удаление всей очереди---------------------------------
- void Dell_All (Ochd *begin1) {
- while (begin1 != NULL) {
- t = begin1;
- begin1 = begin1->next;
- delete t;
- }
- }
- //-----------------------------------Добавить эл-т в начало--------------------------------
- Ochd *Addbegin (Ochd *begin1, Ochd **end, int in) {
- t = new Ochd;
- t->info = in;
- t->prev = NULL;
- t->next = begin1;
- if (begin1 == NULL) *end = t;
- else begin1->prev = t;
- begin1 = t;
- return begin1;
- }
- //------------------------------------Поиск и удаление элемента---------------------------
- Ochd *FindAndDell(Ochd *begin1, int F_el) {
- t = begin1;
- p = begin1;
- if (t->info == F_el) {
- cout << "Удаление в начале" << endl;
- t->next->prev = NULL;
- p = begin1->next;
- begin1 = begin1->next;
- delete t;
- }
- while (begin1->next != NULL) {
- if (t->info == F_el) {
- cout << "Удаление" << endl;
- t = begin1;
- t->next->prev = t->prev->prev;
- t->prev->next = t->next->next;
- begin1 = begin1->next;
- delete t;
- }
- begin1 = begin1->next;
- }
- t = begin1;
- if (t->info == F_el) {
- cout << "Удаление в конце" << endl;
- t->prev->next = NULL;
- begin1 = begin1->next;
- delete t;
- }
- return p;
- }
- //-----------------------------------------------------------------------------------------
- //-----------------------------------------------------------------------------------------
- int main () {
- setlocale(LC_ALL, "Russian");
- srand(time(NULL));
- //-----------------------------------------------------------------------------------------
- int n, t;
- Ochd *begin1, *end;
- begin1 = end = NULL;
- //-----------------------------------------------------------------------------------------
- cout << "Введите количество элементов: "; cin >> n; cout << endl;
- for (int i = 0; i < n; i++) {
- t = -50 + rand() % 100;
- begin1 = AddOchd(begin1, &end, t);
- }
- //-----------------------------------------------------------------------------------------
- cout << "Очередь:" << endl;
- View (begin1); cout << endl;
- cout << "Значение эл-та, который нужно удалить:"; cin >> n; cout << endl;
- begin1 = FindAndDell(begin1, n);
- View (begin1); cout << endl;
- Dell_All (begin1);
- }
- //-----------------------------------------------------------------------------------------
- //-----------------------------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement