Advertisement
vlladislav45

SearchElementInDequeue

Mar 21st, 2018
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.69 KB | None | 0 0
  1. @Copyright vlladislav45
  2. #include "stdafx.h"
  3. #include <iostream>
  4.  
  5. using namespace std;
  6.  
  7. struct elem {
  8.     int data;
  9.     elem *next;
  10. }*head=NULL , *tail=NULL, *pointer;
  11.  
  12. //declare variable
  13. int br = -1;
  14.  
  15. void push_l(int number)
  16. {
  17.     pointer = head;
  18.     head = new elem;
  19.     head->data = number;
  20.     head->next = pointer;
  21.     if (tail == NULL)
  22.         head = tail;
  23. }
  24.  
  25. void push_r(int number)
  26. {
  27.     pointer = tail;
  28.     tail = new elem;
  29.     tail->data = number;
  30.     tail->next = NULL;
  31.     if (head == NULL)
  32.         head = tail;
  33.     else
  34.         pointer->next = tail;
  35. }
  36.  
  37. int pop_l(int &number)
  38. {
  39.     if (head)
  40.     {
  41.         pointer = head;
  42.         number = head->data;
  43.         head = head->next;
  44.         if (head == NULL)
  45.             tail = head;
  46.         delete pointer;
  47.         return 1;
  48.     }
  49.     else
  50.         return 0;
  51. }
  52.  
  53. int pop_r(int &number)
  54. {
  55.     if (tail)
  56.     {
  57.         number = tail->data;
  58.         if (head == tail)
  59.         {
  60.             delete tail;
  61.             head = tail = NULL;
  62.         }
  63.         pointer = head;
  64.         while (pointer->next != tail)
  65.             pointer = pointer->next;
  66.         pointer->next = NULL;
  67.         delete tail;
  68.         tail = pointer;
  69.         return 0;
  70.     }
  71.     else
  72.         return 0;
  73. }
  74.  
  75. void findElementInDeque(int searchNumber)
  76. {
  77.     //Декларирам променливи
  78.     int number;
  79.     bool isPresent = false;  
  80.     //Цикъл от 0 до броячът
  81.     for (int i = 0; i < br; i++)
  82.     {
  83.         //извеждаме числата от дясно едно по едно
  84.         pop_r(number);
  85.         // ако числото което търсим съвпадне с едно от числата които сме проверили
  86.         if (searchNumber == number)      
  87.              //тази променлива става труе      
  88.             isPresent = true;
  89.        
  90.         //връщаме обратното числото което извели от редицата
  91.         push_l(number);
  92.     }
  93.    
  94.     //Ако числото което търсим не съвпадне с някое от редицата
  95.     if (!isPresent)
  96.         //го добавяме най - отляво
  97.         push_l(searchNumber);
  98. }
  99.  
  100. int main() {
  101.     int number;
  102.  
  103.  //Цикъл докато не въведем 0
  104.  do {
  105.      cout << "Enter name of the document P.P 0 for break \n";
  106.      cin >> number;
  107.  
  108.      if(number != 0)
  109.              //добавяме числата в дясно
  110.             push_r(number);
  111.      //броячът ни се увеличава с 1 винаги когато влезе в цикъла
  112.      br++;
  113.      } while (number != 0);
  114.  
  115.      //Търсим число
  116.      cout << "\n Search ";
  117.      int search;
  118.      cin >> search;
  119.     //викаме функцията
  120.     findElementInDeque(search);
  121.  
  122.     //извеждаме дека
  123.     cout << "List: \t";
  124.     while (pop_l(number))
  125.         cout << number << "\t";
  126.  
  127.     cout << endl;
  128.     system("pause");
  129. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement