队列-C++-单链表

#include<iostream>
using namespace std;
class Queue
{
public:
    Queue();
    ~Queue();
    void EnQueue(int x);//入队
    int DeQueue();//出队
    int GetQueue();//取队头
    bool IsEmpty();//判空
private:
    struct QueueNode
    {
        int data;
        QueueNode *next;
    }node;
    QueueNode *front;
    QueueNode *rear;
};
Queue::Queue()
{
    front=NULL;
    rear=NULL;
}
Queue::~Queue()
{
    while(front)
    {
        QueueNode *tem=front;
        front=front->next;
        delete tem;
    }
}
void Queue::EnQueue(int x)
{
    if(front==NULL)
        {front=rear=new QueueNode(node);
        front->data=x;}
       else
       {
        QueueNode *newqueuenode=new QueueNode(node);
        newqueuenode->data=x;
        rear->next=newqueuenode;
        rear=newqueuenode;
        rear->next=NULL;
       }
}
int  Queue::DeQueue()
{
    if(IsEmpty())
     {
         cout<<"Error,queue is empty !";
     }
     QueueNode *tem=front;
     front=front->next;
     delete tem;
    return 0;
}
int Queue::GetQueue()
{
    if(IsEmpty())
     {
         cout<<"Error,queue is empty !";
     }
     return front->data;
}
bool Queue::IsEmpty()
{
    if(front==NULL)
        return 1;
    else
        return 0;
}
int main()
{
    Queue s;
    for(int i=0;i<5;i++)
    {
            s.EnQueue(i);
    }
    while(!s.IsEmpty())
    {
        cout<<s.GetQueue()<<" ";
        s.DeQueue();
    }
    cout<<endl;
    return 0;
}

猜你喜欢

转载自blog.csdn.net/arthu6/article/details/79647445