1. 程式人生 > >C++利用模板實現一個佇列

C++利用模板實現一個佇列

開頭總結:.利用模板類實現了一個佇列,利用模板的好處是提供泛型程式設計,在儲存資料的時候會適應不同型別的資料,減少了程式碼的書寫,簡化了程式的結構。
#include <iostream>
using namespace std;


//模板類
template <typename T,int num>
class Queue
{
private:
        T arr[num];
        int front;
        int rear;
public:
        Queue() //建構函式
        {
         front=0;
         rear=0;
        }

        bool isEmpty();//判斷佇列是否為空
        bool isFull();//判斷佇列是否為滿
        bool push(const T &);//進佇列
        bool pop(T &);//出佇列 這裡的引數一定是引用 因為要改變其本身
};

template <typename T,int  num>
bool Queue<T,num>::isEmpty()
{
        return front==rear;
}

template<typename T,int num>
bool Queue<T,num>::isFull()
{
        return front==num;
}

template<typename T,int num> //進佇列 判斷佇列是否滿
bool Queue<T,num>::push(const T &a)
{
        if(isFull())
        {
         cout<<"佇列已滿"<<endl;
         return false;
        }
        else
        {
         arr[front]=a;
         ++front;
        }
        return true;
}

template<typename T,int num>
bool Queue<T,num>::pop(T &b)
{
        if(isEmpty())
        {
         cout<<"佇列空了"<<endl;
         return false;
        }
        else
        {
         b=arr[rear];
         ++rear;
        }
        return true;
}

int main()
{
        Queue<int,7> q;  //開7個空間
        cout<<"剛開始佇列空嗎?  "<<q.isEmpty()<<endl;
        q.push(6);
        q.push(10);
        cout<<"現在還是佇列空嗎?  "<<q.isFull()<<endl;
        int b1,b2;
        q.pop(b1);
        q.pop(b2);
        cout<<"佇列中第一個刪除的元素為:  "<<b1<<endl;
        cout<<"佇列中第二個刪除的元素為:  "<<b2<<endl;
}