Advertisement
gha890826

queue made by template

May 28th, 2019
314
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.56 KB | None | 0 0
  1. // Quene.cpp : 定義主控台應用程式的進入點。
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include <iostream>
  6. using namespace std;
  7.  
  8. template<class T, int maxsize = 20>
  9. class queue
  10. {
  11. public:
  12.     queue(){ sq = 0; obj = 0; }
  13.     T pop();
  14.     void push(T in);
  15.     void show_data(){ cout << endl << "***data[]="; for (int i = 0; i < sq; i++){ cout << data[i]; } cout << endl; }
  16. private:
  17.     int sq, obj;
  18.     T data[maxsize];
  19.     static void error(){ cout << "\nQueue error!\n"; }
  20.     void qswap(T* data, int sq);
  21. };
  22.  
  23. template < class T, int maxsize>
  24. void queue<T, maxsize>::push(T in)
  25. {
  26.     if (sq == maxsize)
  27.     {
  28.         error();
  29.     }
  30.     else
  31.     {
  32.         data[sq++] = in;
  33.         obj++;
  34.     }
  35.  
  36. }
  37.  
  38. template < class T, int maxsize>
  39. void queue<T, maxsize>::qswap(T* data, int sq)
  40. {
  41.     for (int i = 1; i < sq; i++)
  42.     {
  43.         data[i - 1] = data[i];
  44.     }
  45. }
  46.  
  47. template < class T, int maxsize>
  48. T queue<T, maxsize>::pop()
  49. {
  50.     if (obj == 0)
  51.     {
  52.         error();
  53.         return 0;
  54.     }
  55.     else
  56.     {
  57.         T temp = data[0];
  58.         cout << temp;
  59.         obj--;
  60.         qswap(data, sq);
  61.         sq--;
  62.         return temp;
  63.     }
  64. }
  65.  
  66.  
  67. int main()
  68. {
  69.     queue<int> qu1;
  70.     queue<char, 10> qu2;
  71.  
  72.     qu1.push(1);
  73.     //qu1.show_data();
  74.     qu1.push(2);
  75.     //qu1.show_data();
  76.     qu1.push(3);
  77.     //qu1.show_data();
  78.  
  79.     qu2.push('a');
  80.     //qu2.show_data();
  81.     qu2.push('b');
  82.     //qu2.show_data();
  83.     qu2.push('c');
  84.     //qu2.show_data();
  85.  
  86.     qu1.pop();
  87.     //qu1.show_data();
  88.     qu1.pop();
  89.     //qu1.show_data();
  90.     qu1.pop();
  91.     //qu1.show_data();
  92.     qu2.pop();
  93.     //qu2.show_data();
  94.     qu2.pop();
  95.     //qu2.show_data();
  96.     qu2.pop();
  97.     //qu2.show_data();
  98.     qu2.pop();
  99.     //qu2.show_data();
  100.  
  101.  
  102.     return 0;
  103. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement