数据结构之——基于数组的队列的C++模板实现

template<typename T>
Class Myqueue
{
public:
    Myqueue(int max=50):capa(max),head(0),tail(0),data(nullptr)
    {
        data=new T[capa]
    }
    void enqueue(T &x);//入队
    T front();//队首
    void dequeue();//出队
    int counts();//元素个数
    bool empty();//判空
    bool full();//判满
    ~Myqueue(delete[]data);
private:
    int head;
    int tail;
    int count;
    T* data;
    int capa;
}
template<typename T>
void Myqueue<T>::enqueue(T &x)
{
    if(!full())
    {
        data[tail]=x;
        count++;
    }
    if(tail==capa)
        tail=0;
    else
        tail++;
}
template<typename T>
bool Myqueue<T>::empty()
{
    return count==0;
}
bool Myqueue<T>::full()
{
    return count==capa;
}
template<typename T>
T MyStack<T>::front()
{
    if(!empty())
        return data[head];
}
template<typename T>
void MyStack<T>::dequeue()
{
    if(!empty())
    {
        if(head==capa)
           head=0;
        else
           head++;
        --count;
    }
}
template<typename T>
int MyStack<T>::counts()
{
    return count;
}

 双端队列补充从头部插入和从尾部删除:

template<typename T>
void Myqueue<T>::HeadEnqueue(T &x)
{
    if(!full())
    {
        if(head==0)
           head=capa;
        else
           head--;
        data[head]=x;
        count++;
    }
}
template<typename T>
void MyStack<T>::TailDequeue()
{
    if(!empty())
    {
        if(tail==0)
          tail=capa;
        else
          tail--;
        --count;
    }
}

 

posted @ 2017-06-14 19:39  燕子不呢喃  阅读(222)  评论(0编辑  收藏  举报