单链队列,队列的链式存储结构C++实现
//mList.cpp
/*
使用链式结构实现队列操作
@author:天下无双
@date:2014-5-28
@version:2.0
*/
#include
using namespace std;
template
class Queue
{
private:
static const int MAX=100 ;//队列的最大长度
//队列节点
struct QNode{
T data;//节点值
QNode *next;
};
QNode *front;//队列头指针
QNode *rear;//队列尾指针
int count;//队列长度
public:
//创建空队列
Queue(){
front=rear=nullptr;
count=0;
}
~Queue(){
QNode *temp=front;
QNode *p=temp;
cout<<endl;
while(temp!=nullptr){
temp=temp->next;
cout<<”delete “<
delete p;
p=temp;
}
}
//插入元素
bool EnQueue(T &t){
QNode *p=new QNode;
p->data=t;
p->next=nullptr;
if(nullptr==front){//如果是一个空队列
front=rear=p;
count++;
front->next=nullptr;
return true;
}else if(!isFull()){//判断队列是否已满
rear->next=p;
rear=p;//重新指定尾指针,rear=p
//rear->next=nullptr;//重新指定尾指针,rear=p->next=nullptr;
count++;
return true;
}else
return false;
}
//删除队列头
bool DeleteQueue(){
if(isEmpty()){//判断是否为空队列
cout<<”Queue is Empty!Can’t delte it!”<<endl;
return false;
}
QNode *temp=front;
front=front->next;
delete temp;
count–;
return true;
}
int Length()const{
return count;
}
void show()const{
QNode *temp=front;
while(temp!=nullptr){
cout<
temp=temp->next;
}
}
protected:
bool isEmpty()const{
return count==0;
}
bool isFull()const{
if(count==MAX){
cout<<”Queue full!”<<endl;
return true;
}
return false;
}
};
测试代码:
int main() { { Queueq; for(int i=1;i<103;i++) q.EnQueue(i); cout< 赏感谢支持
支付宝
微信