数据结构试验四 队列有关操作

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int QueueSize=100;
template<class DataType>
class CirQueue
{private:
    DataType data[QueueSize];
    int front,rear;
public:
    CirQueue()
{
    front=rear=QueueSize-1;
}
void EnQueue(DataType x);
DataType DeQueue();
DataType GetQueue();
int Empty()
{if(front==rear)
return 1;
else
    return 0;
}

};
template<class DataType>
void CirQueue<DataType>::EnQueue(DataType x)
{
    if((rear+1)%QueueSize==front)
    throw("上溢");
    rear=(rear+1)%QueueSize;
    data[rear]=x;

}
template<class DataType>
DataType CirQueue<DataType>::DeQueue()
{
    if(front==rear)
        throw"下溢";
    front=(front+1)%QueueSize;
    return data[front];
}
template<class DataType>
DataType CirQueue<DataType>::GetQueue()
{
    if(rear==front)
        throw"下溢";
    int i=(front+1)%QueueSize;
    return data[i];
}
int main()
{
    CirQueue<int>q;
    q.EnQueue(1);
    q.EnQueue(2);
    q.EnQueue(3);
    cout<<q.DeQueue()<<endl;
    cout<<q.DeQueue()<<endl;
    cout<<q.GetQueue()<<endl;
}
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;

template<class DataType>
struct Node
{DataType data;
Node<DataType>*next;

};
template<class DataType>
class LinQueue
    {
    private:
        Node<DataType>*front;
        Node<DataType>*rear;
    public:
        LinQueue();
        ~LinQueue(){}
        void EnQueue(DataType x);
        DataType DeQueue();
        DataType GetQueue();
        int Empty()
        {
           if(front==rear)
            return 1;
           else
            return 0;
        }
    };
    template<class DataType>
    LinQueue<DataType>::LinQueue()
    {
    Node<DataType>*s;
    s=new Node<DataType>;
    s->next=NULL;
    front=rear=s;

    }
    template<class DataType>
    void LinQueue<DataType>::EnQueue(DataType x)
    {
        Node<DataType>*s;
        s=new Node<DataType>;
        s->data=x;
        s->next=NULL;
        rear->next=s;
        rear=s;
    }
    template<class DataType>
    DataType LinQueue<DataType>::DeQueue()
    {

        Node<DataType>*p;
        if(front==rear)
            throw"下溢";
        p=front->next;
        DataType x=p->data;
        front->next=p->next;
        if(p->next==NULL)
            rear=front;
        delete p;
        return x;

    }
    template<class DataType>
    DataType LinQueue<DataType>::GetQueue()
    {
        return front->next->data;
    }
int main()
{
    LinQueue<int>q;
    q.EnQueue(1);
    q.EnQueue(2);
    q.EnQueue(3);
    q.DeQueue();
    q.DeQueue();
   
        

}

猜你喜欢

转载自blog.csdn.net/sdauguanweihong/article/details/89466188
今日推荐