Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include<stdio.h>
- #include<time.h>
- #include<math.h>
- #include<stdlib.h>
- #include<string.h>
- #pragma hdrstop
- struct item
- {
- int data;
- item* next;
- };
- item* head, * tail;
- void add(int x); //добавить эл-т в очередь с приоритет включением
- void delet1(void); //извлечение эл-та из головы
- void fromhead(void); //получить эл-т из голoвы
- void out(void); //вывод очереди
- bool isnull(void) { return head == NULL; } //проверка на пустоту
- void clrscr(void); //очистка очереди
- //---------------------------------------------------------------------------
- using namespace std;
- int main()
- {
- int i = 1, num, z;
- head = NULL; tail = NULL;
- cout << " Welcome, friends!!!" << endl;
- while (i != 2)
- {
- cout << "What action do you want do? - " << endl;
- cout << " 1-Add symbol;" << endl;
- cout << " 2-Get symbol from head" << endl;
- cout << " 3-extract symbol from head;" << endl;
- cout << " 4-Output;" << endl;
- cout << " 5-Delete elements;" << endl;
- cin >> num;
- switch (num)
- {
- case 1: cout << "Enter symbol,which you want add:" << endl;
- cin >> z; add(z); out(); break;
- case 2: fromhead(); break;
- case 3: delet1(); break;
- case 4: out(); break;
- case 5: clrscr(); break;
- }
- cout << "You want do any action?-" << endl;
- cout << "1-Ok!, 2-No,thanks!" << endl;
- cin >> i;
- }
- return 0;
- }
- //---------------------------------------------------------------------------
- void add(int x) //добавить эл-т в очередь с приоритет включением
- {
- item* p = new item; //новый указатель на очередь
- p->data = x; p->next = NULL; //присваиваем ему вводимое значение и конец очереди
- item* v = new item; //указат для нового числа
- item* p1 = new item; //указатель для просмотра очереди (следующие число)
- item* p2 = new item; //указатель для ввода числа (предыдущее число)
- int i = 0; // флажок
- if (isnull()) head = tail = p; //проверка на конец и запись числа
- else {
- p2 = head;
- p1 = head;
- while (p1 != NULL) //пока очередь не закончится
- {
- if (i == 1)
- {
- if (x <= p1->data) //число меньше чем в очереди
- {
- v->data = x; // присваиваем новое число
- v->next = p1; //присваиваем следующее число
- p2->next = v; //запись нового числа
- return; //выход
- }
- p2 = p2->next; //рассматриваем следующие число
- }
- else
- {
- if (x <= p1->data) //число меньше чем в очереди
- {
- v->data = x; // присваиваем новое число
- v->next = p1; //присваиваем следующее число
- head = v; //запись нового числа в голову очереди
- return;
- }
- }
- p1 = p1->next; //рассматриваем следующие число
- i = 1;
- }
- if (p1 == NULL) //конец очереди
- {
- tail->next = p; //последний элемент стал предпоследним
- tail = p; // обновили указатель на хвост
- }
- }
- }
- //---------------------------------------------------------------------------
- void delet1() //извлечение эл-та из головы
- {
- if (isnull()) cout << "Clear" << endl; //проверка на пустоту
- else {
- item* p = head; //присваиваем переменной голову очереди
- head = head->next; //голове присваиваем следующие значение очереди
- delete p; //удаляем старое значение головы
- }
- }
- //---------------------------------------------------------------------------
- void fromhead() //получение эл-та из головы
- {
- if (isnull()) cout << "Ochered pysta" << endl; //проверка на пустоту
- else cout << "Head = " << head->data << endl;
- }
- //---------------------------------------------------------------------------
- void out()//вывод очереди
- {
- item* p = new item;
- if (isnull()) cout << "Clear" << endl; //проверка на пустоту
- else {
- cout << "Ochered = ";
- p = head; //присваиваем голову переменной
- while (!isnull()) //пока не конец очереди выводим на экран
- {
- if (p != NULL)
- {
- cout << p->data << " ";
- cout << "->";
- p = p->next;
- }
- else { cout << "NULL" << endl; return; }
- }
- }
- }
- //---------------------------------------------------------------------------
- void clrscr() //очистка очереди
- {
- while (!isnull()) delet1();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement