broadbringer

простая очередь

Dec 17th, 2017
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.50 KB | None | 0 0
  1. // ConsoleApplication8.cpp: определяет точку входа для консольного приложения.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include <iostream>
  6. #include <string>
  7. using namespace std;
  8. struct Node {
  9.     int data;
  10.     Node *next;
  11. };
  12. struct Queue{
  13.     int size;
  14.     Node* first;
  15.     Node* last;
  16. };
  17. void Creation(Queue*Q) {
  18.     Q->first = new Node; // выдялем память под новый элемент:
  19.     Q->first->next = NULL;
  20.     Q->last = Q->first;
  21.     Q->size = 0;
  22. }
  23. int Size(Queue *Q) //размер очереди
  24. {
  25.     return Q->size;
  26. }
  27. void Clear(Queue* Q) { // очистка
  28.     Q->size--;
  29. }
  30. void exit(Queue* Q) {
  31.     cout << "bye";
  32. }
  33. void Add(Queue*Q) {
  34.     int value;
  35.     cin >> value;
  36.     Q->last->next = new Node;
  37.     Q->last = Q->last->next;
  38.     Q->last->data = value;
  39.     Q->last->next = NULL; // обнуление указателя на след.элемент
  40.     Q->size++;
  41. }
  42. void top(Queue *Q,int k) { //функция вывода всех элементов , с учетом удаления элемента.
  43.     if (Q->first->next->data == k) { // проверка если значение списка равно k , то меняем это значение на следующее по списку
  44.         Q->first = Q->first->next; //смещение указателя
  45.     }
  46.     else { // если же это другое значение , то
  47.         cout << Q->first->next->data; // просто выводим первый элемент
  48.         cout << " ";
  49.         Q->first = Q->first->next; //смещаем указать
  50.         Q->size--;
  51.     }
  52. }
  53. void delete_first(Queue*Q) { // удаление первого
  54.     cout << Q->first->next->data; // просто выводим первый элемент
  55.     Q->first = Q->first->next; //смещаем указать
  56.     Q->size--;
  57. }
  58. bool Full(Queue*Q) {
  59.     if (Q->first == Q->last) return true;
  60.     else return false;
  61. }
  62. int front(Queue*Q) {
  63.     return Q->first->next->data;
  64. }
  65. int main() {
  66.     //freopen("input.txt", "r", stdin);
  67.     //freopen("output.txt", "w", stdout);
  68.     Queue Q;
  69.     Creation(&Q);
  70.     string valuable;
  71.    
  72.     while (valuable != "exit"){
  73.         cin >> valuable;
  74.  
  75.         if (valuable == "push") {
  76.             Add(&Q);
  77.             cout <<"ok";
  78.         }
  79.         else if (valuable == "pop") {
  80.             delete_first(&Q);
  81.            
  82.         }
  83.         else if (valuable == "front") {
  84.             cout << front(&Q);
  85.            
  86.         }
  87.         else if (valuable == "size") {
  88.             cout << Size(&Q);
  89.            
  90.         }
  91.         else if (valuable == "clear") {
  92.             Clear(&Q);
  93.            
  94.         }
  95.         else if (valuable == "exit") {
  96.             exit(&Q);
  97.             break;
  98.         }
  99.     }
  100.    
  101.    
  102.     return 0;
  103. }
Advertisement
Add Comment
Please, Sign In to add comment