Advertisement
Domerk

Очередь (что есть пока)

Oct 6th, 2012
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.73 KB | None | 0 0
  1. //недоделанная программа, которая должна реализовывать очередь, а реализовывает стек
  2.  
  3. #include <iostream>
  4. using namespace std;
  5.  
  6. struct elem
  7. {
  8.     int i;
  9.     elem*next;
  10. };
  11.  
  12. bool pop (elem*h, int&a);
  13. void push (elem*&h, int a);
  14.  
  15. int main ()
  16. {
  17.     int a;
  18.     elem* str1=0;
  19.     if (!pop(str1, a))
  20.         cout<<"Str is emty!";
  21.     std::cin.sync();
  22.     std::cin.clear();
  23.     std::cin.get();
  24.     return 0;
  25. }
  26.  
  27. bool pop (elem*h, int&a)
  28. {
  29.     if (h)
  30.     {
  31.         elem* tp = h -> next;
  32.         int t= h -> i;
  33.         delete h;
  34.         h=tp;
  35.         return t;
  36.     }
  37.     return false;
  38. }
  39.  
  40. void push (elem*&h, int a)
  41. {
  42.     elem*p=new elem;
  43.     p->i=a;
  44.     p->next=h;
  45.     h=p;
  46. }
  47.  
  48. //===========================================
  49. //===========================================
  50. //===========================================
  51. // ВЕРСИЯ 2.0
  52. // всё ещё не то и не работает
  53.  
  54. //недоделанная программа, которая должна реализовывать очередь
  55. //поменять функцию push
  56. //НУЖНО БОЛЬШЕ СПАТЬ!!!
  57.  
  58. #include <iostream>
  59. using namespace std;
  60.  
  61. //=================================
  62.  
  63. struct elem        //структура элемента
  64. {
  65.     int i;
  66.     elem*next;
  67. };
  68.  
  69. //=================================
  70.  
  71. bool pop (elem*&h, int&a);
  72. void push (elem*&h, int a);
  73.  
  74. //=================================
  75.  
  76. int main ()
  77. {
  78.     int a,b,c,d;
  79.  
  80.     elem* str1=0;
  81.     push (str1, 1);
  82.     push (str1, 2);
  83.     push (str1, 3);
  84.     push (str1, 4);
  85.  
  86.     if (!pop(str1, a))
  87.         cout<<"Str is emty!";
  88.  
  89.     pop (str1, a);
  90.     pop (str1, b);
  91.     pop (str1, c);
  92.     //pop (str1, d);
  93.  
  94.     cout<<a<<b<<c;
  95.    
  96.     std::cin.sync();
  97.     std::cin.clear();
  98.     std::cin.get();
  99.     return 0;
  100. }
  101.  
  102. //=================================
  103.  
  104. bool pop (elem*&h, int&a)      //извлечение элементов
  105.                                //пока указатель элемента не равен 0 разыминовываем его, переходим на указатель след. элемента
  106.                    //указатель элемента, после которого следовал указатель 0, обнуляем, сохранив значение его указателя во временном укaзателе
  107.                    //разыминовываем временный указатель, возвращаем полученный элемент
  108. {
  109.     if (h)
  110.     {
  111.         elem* tp = h -> next;
  112.         int t= h -> i;
  113.         delete h;
  114.         h=tp;
  115.         a = t;
  116.         return true;
  117.     }
  118.     return false;
  119. }
  120.  
  121. //=================================
  122.  
  123. void push (elem*&h, int a)      //добавление элементов
  124. {
  125.     elem*p=new elem;
  126.     p->i=a;
  127.     p->next=h;
  128.     h=p;
  129. }
  130.  
  131. //=================================
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement