构建队列
template<class datatype>
LinkQueue<datatype>::LinkQueue(){
front=new Node<datatype>;
front->next=NULL;
rear=front;
length=0;
}
template<class datatype>
LinkQueue<datatype>::~LinkQueue(){
while(front!=rear){
Node<datatype> *p;
p=front;
front=p->next;
delete p;
}
}
入队出队
template<class datatype>
void LinkQueue<datatype>::enQueue(datatype x){
Node<datatype> *p;
p=new Node<datatype>;
p->data=x;
rear->next=p;
rear=p;
length++;
}
template<class datatype>
bool LinkQueue<datatype>::deQueue(datatype *item){
if(front==rear){
return false;
}
else{
Node<datatype> *p;
p=front->next;
*item=p->data;
front->next=p->next;
if(p->next=NULL) rear=front;
delete p;
length--;
return true;
}
}
完整代码
#include<iostream>
using namespace std;
template<class datatype>
struct Node{
datatype data;
struct Node *next;
};
template<class datatype>
class LinkQueue{
private:
Node<datatype> *front,*rear;
int length;
public:
LinkQueue();
~LinkQueue();
void enQueue(datatype x);
bool deQueue(datatype *item);
bool getFront(datatype *item);
};
template<class datatype>
LinkQueue<datatype>::LinkQueue(){
front=new Node<datatype>;
front->next=NULL;
rear=front;
length=0;
}
template<class datatype>
LinkQueue<datatype>::~LinkQueue(){
while(front!=rear){
Node<datatype> *p;
p=front;
front=p->next;
delete p;
}
}
template<class datatype>
void LinkQueue<datatype>::enQueue(datatype x){
Node<datatype> *p;
p=new Node<datatype>;
p->data=x;
rear->next=p;
rear=p;
length++;
}
template<class datatype>
bool LinkQueue<datatype>::deQueue(datatype *item){
if(front==rear){
return false;
}
else{
Node<datatype> *p;
p=front->next;
*item=p->data;
front->next=p->next;
if(p->next=NULL) rear=front;
delete p;
length--;
return true;
}
}
template<class datatype>
bool LinkQueue<datatype>::getFront(datatype *item){
Node<datatype> *p;
p=new Node<datatype>;
p=front->next;
item=p->data;
return true;
}
int main(){
LinkQueue<int> s;
int i,x;
for(i=0;i<5;i++){
cin>>x;
s.enQueue(x);
}
int a;
for(i=0;i<5;i++){
s.deQueue(&a);
cout<<a<<endl;
}
s.~LinkQueue();
return 0;
}