#include <iostream>
#include <cstdlib>
using namespace std;
//连队的结点
struct Node{
int date;
Node *next;
};
class Queue{
public:
Queue();
~Queue();
bool EnQueue(int e);
bool DeQueue(int &e);
int GetFront();
void ClearQueue();
bool IsEmpty();
private:
Node *Front, *Rear;
};
//构造队列
Queue::Queue(){
Front = Rear = new Node;//头结点
Front->next = NULL;
}
//销毁队列
Queue::~Queue(){
ClearQueue();
delete Front;
}
//入队
bool Queue::EnQueue(int e){
Rear->next = new Node;
Rear = Rear->next;
Rear->date = e;
Rear->next = NULL;
return true;
}
//出队
bool Queue::DeQueue(int &e){
Node *p;
if(!IsEmpty()){
p = Front->next;
e = p->date;
Front->next = p->next;
delete p;
return true;
}else{
cout << "队列为空!" << endl;
return false;
}
}
bool Queue::IsEmpty(){
return Front->next == NULL;
}
//取头结点
int Queue::GetFront(){
if(!IsEmpty()){
return Front->next->date;
}else{
cout << "队列为空,没有头元素!" << endl;
}
}
//清空队列
void Queue::ClearQueue(){
Rear = Front->next;
while(Front->next != NULL){
Front->next = Rear->next;
delete Rear;
Rear = Front->next;
}
Rear = Front;
}
int main(){
Queue q;
int e;
q.DeQueue(e);
q.EnQueue(1);
q.EnQueue(2);
q.EnQueue(3);
q.DeQueue(e);
cout << "e: " << e;
q.~Queue();
system("pause");
return 0;
}