#ifndef _QUEUE_H
#define _QUEUE_H
#include <iostream>
using namespace std;
class Queue{
private:
struct queueNode{
int data;
queueNode *next;
};
queueNode *front;
queueNode *tail;
public:
Queue();
~Queue();
bool enQueue(int data);
bool deQueue();
bool isEmpty();
void display();
};
Queue::Queue():front(NULL),tail(NULL){}
Queue::~Queue(){}
bool Queue::isEmpty(){
if(front==NULL && tail==NULL)
return true;
else
return false;
}
void Queue::display(){
if(isEmpty())
cout << "The Queue is Empty..." << endl;
queueNode *tmp=front;
while (tmp!=NULL){
cout << tmp->data << " ";
tmp=tmp->next;
}
cout << endl;
}
bool Queue::enQueue(int data){
if(isEmpty()){
//若队列为空
front=tail=new queueNode();
tail->data=data;
tail->next=NULL;
}else{
//队列非空
queueNode* tmp=new queueNode();
tmp->data=data;
tmp->next=NULL;
tail->next=tmp;
tail=tail->next;
}
return true;
}
bool Queue::deQueue(){
if(isEmpty()) //为空时
return false;
else if(front==tail){ //只有一个节点时
queueNode *tmp=tail;
front=tail=NULL;
delete tmp;
tmp=NULL;
return true;
}
else{
queueNode *tmp=front;
front=front->next;
delete tmp;
tmp=NULL;
return true;
}
}
#endif//~_QUEUE_H
#include "Queue.h"
#include <iostream>
using namespace std;
int main(){
Queue que;
cout << que.isEmpty() << endl;
que.display();
que.enQueue(3);
que.enQueue(5);
que.display();
que.deQueue();
que.deQueue();
que.display();
que.enQueue(1);
que.enQueue(2);
que.enQueue(3);
que.display();
return 0;
}