Queen模板实现

来源:互联网 发布:go并发编程实战 pdf 编辑:程序博客网 时间:2024/04/27 20:04

今天早上给大家带来一个Queen的实现.


#include<exception>#include<iostream>using namespace std;template <class T>class Queen{    public:        struct node{            T data;            node* next;            node(const T data = T()):data(data),next(NULL){}        };        Queen(int _max=0):max(_max),size(0),last(NULL)        {            head = new node();        }        virtual ~Queen();        void queenPut(const T&);        T queenGet();        bool queenEmpty();        bool queenFull();        void show();        void clear();        void setNode(const T&);        int getSize()const { return size;}    private:        int size;        int max;        node* head;        node* last;};template <class T>void Queen<T>::clear(){    node* p = head;    while(p->next!=NULL)    {        node* temp;        temp = p;        p = p->next;        --size;        delete temp;    }}template <class T>Queen<T>::~Queen(){    clear();}template <class T>void Queen<T>::setNode(const T& data){    node* no = new node();    if(no!=NULL){        no->data = data;        no->next = last->next;        last->next = no;        last = last->next;        ++size;    }}template <class T>void Queen<T>::queenPut(const T& data){    if(queenFull())    {        throw "Queen is full !!";    }    node* no = new node();    if(last==NULL)    {        no->data = data;        no->next = head->next;        head->next = no;        last = head->next;        ++size;        return ;    }    setNode(data);}template <class T>T Queen<T>::queenGet(){    if(queenEmpty())    {        throw "Queen is empty !!";    }    T data = head->next->data;    node* p = head->next->next;    delete head->next;    head->next = p;    --size;    return data;}template <class T>void Queen<T>::show(){    node* p = head->next;    cout<<"Queen< ";    while(p!=NULL)    {        cout<<p->data<<' ';        p = p->next;    }    cout<<" > ";    cout<<endl;}template <class T>bool Queen<T>::queenEmpty(){    return (head->next)==NULL;}template <class T>bool Queen<T>::queenFull(){   return size==max;}


功能和Stack差不多

0 0
原创粉丝点击