链队列的C++ 实现以及循环队列
来源:互联网 发布:淘宝采集赚钱怎么弄 编辑:程序博客网 时间:2024/06/04 01:22
链式队列:
template<class T>
struct QNode
{
T data;
QNode *next;
QNode(T m_data=0):data(m_data),next(NULL){};
};
template<class T>
class MyQueue
{
public:
MyQueue();
~MyQueue();
void EnQueue(T& elem);//元素入队列
bool DeQueue(T& elem);//元素出队列,即删除队头元素
bool IsEmpty();//判断队列是否为空
int QueueLength();//队列的长度
private:
QNode<T> *front;//队头指针
QNode<T> *rear;//队尾指针
};
template<class T>
MyQueue<T>::MyQueue()
{
front=new QNode<T>;
rear=front;
rear->next=NULL;
}
template<class T>
void MyQueue<T>::EnQueue(T &elem)
{
QNode<T> *p=new QNode<T>(elem);
rear->next=p;
rear=p;
}
template<class T>
bool MyQueue<T>::DeQueue(T& elem)
{
if(!IsEmpty())
{
QNode<T>* p=front->next;
front->next=p->next;
elem=p->data;
delete p;
return true;
}
else
{
return false;
}
}
template<class T>
bool MyQueue<T>::IsEmpty()
{
if(front->next==NULL)
return true;
else
return false;
}
template<class T>
int MyQueue<T>::QueueLength()
{
int len=0;
QNode<T> *p=front;
while(p->next)
{
len++;
p=p->next;
}
return len;
}
template<class T>
MyQueue<T>::~MyQueue()
{
T elem;
while(front->next)
{
QNode<T>* p=front->next;
front->next=p->next;
delete p;
p=0;
}
delete front;
}
循环队列:
const int MAXSIZE=20;
class CircleQueue
{
public:
CircleQueue():base(new int[MAXSIZE]),front(0),rear(0){};
~CircleQueue()
{
delete base;
front=0;
rear=0;
};
int QueueLength()
{
return (rear-front+MAXSIZE)%MAXSIZE;
}
bool Enqueue(int elem)
{
if((rear+1)%MAXSIZE==front)
{
cout<<"队列满了"<<endl;
return false;
}
else
{
base[rear]=elem;
rear=(rear+1)%MAXSIZE;
return true;
}
}
bool Dequeue(int &data)
{
if(front==rear)
{
cout<<"队列为空"<<endl;
return false;
}
else
{
data=base[front];
front=(front+1)%MAXSIZE;
return true;
}
}
bool IsEmpty()
{
if(rear==front)
return true;
else
return false;
}
private:
int *base;//初始化动态分配存储空间
int front;//指向队首
int rear;//指向队尾
};
- 链队列的C++ 实现以及循环队列
- c 实现的 循环队列
- 普通队列,循环队列以及链队列的相关操作
- 循环队列实现(C++)
- C 循环队列实现
- 循环队列 c 实现!!!!
- 【C++】实现循环队列
- 顺序队列(循环队列)和链队列的C代码实现
- 队列----循环队列的实现
- 数据结构的C实现_循环队列
- 数据结构循环队列的实现c程序
- 循环队列的实现(C语言)
- c语言循环线性队列的实现
- 数据结构的C实现_循环队列
- 循环队列的实现(C语言)
- 顺序循环队列的c语言实现
- C语言-循环队列的简单实现
- 【数据结构】循环队列的实现(c++)
- 心蓝软件更新
- 栈的C++实现及用于括号匹配
- html中lable标签的作用
- 对圣诞礼物程序的分析有了一丝进展
- Oracle&SQL Server中的select into方法
- 链队列的C++ 实现以及循环队列
- 15个步骤收获一生的学习习惯
- struts-config.xml的forward注意点之一
- 采用分布式存储技术做了个贴吧,拥有无数个吧,可容纳无数个贴 欢迎各路英雄批评指正!
- 转让石药,联想再玩左右手
- 校园招聘(面试)
- 采用分布式存储技术做了个贴吧,拥有无数个吧,可容纳无数个贴 欢迎各路英雄批评指正!
- 采用分布式存储技术做了个贴吧,拥有无数个吧,可容纳无数个贴 欢迎各路英雄批评指正!
- 采用分布式存储技术做了个贴吧,拥有无数个吧,可容纳无数个贴 欢迎各路英雄批评指正!