您的位置:首页 > 理论基础 > 数据结构算法

几种简单的数据结构的C++实现,树,图,链表,环形队列,栈等---环形队列篇

2016-11-26 20:32 1941 查看
//简单实现,模板类,环形队列
#include <iostream>
using namespace std;
template <typename T,int size>
class Queue
{
public:
Queue();
~Queue();
void travel();
bool isFull() const;
bool isEmpty() const;
bool EnQueue(T elem);
bool DeQueue(T &elem);
void clear();
private:
int m_iSize;
int m_iHead;
int m_iTail;
int m_iLength;
T *m_Qqueue;
};

template <typename T,int size>
Queue<T,size>::Queue(){
m_iSize=size;
m_Qqueue=new T[size];
clear();
}
template <typename T,int size>
Queue<T,size>::~Queue(){
delete []m_Qqueue;
m_Qqueue=NULL;
}
template <typename T,int size>
void Queue<T,size>::clear(){
m_iTail=0;
m_iHead=0;
m_iLength=0;
}
template <typename T,int size>
bool Queue<T,size>::isFull() const{
return m_iSize==m_iLength ? true:false;
}
template <typename T,int size>
bool Queue<T,size>::isEmpty() const{
return m_iLength==0 ? true:false;
}
template <typename T,int size>
bool Queue<T,size>::EnQueue(T elem){
if(isFull()){
return false;
}else{
m_Qqueue[m_iTail]=elem;
m_iTail=(m_iTail+1)%m_iSize;
m_iLength++;
return true;
}
}
template <typename T,int size>
bool Queue<T,size>::DeQueue(T &elem){
if(isEmpty()){
return false;
}else{
elem=m_Qqueue[m_iHead];
m_iHead=(m_iHead+1)%m_iSize;
m_iLength--;
return true;
}
}
template <typename T,int size>
void Queue<T,size>::travel(){
int i;
for (i=m_iHead;i<m_iHead+m_iLength;i++){
cout<<m_Qqueue[i%m_iSize]<<" ";
}
cout<<endl;
}

//测试队列
int main()
{
int a,b;
char c,d;
Queue<int,5> q1;
Queue<char,4> q2;
cout<<q1.isEmpty()<<endl;
cout<<q2.isEmpty()<<endl;
q1.EnQueue(6);
q1.EnQueue(7);
q1.EnQueue(8);
q1.EnQueue(9);
q1.EnQueue(10);
q2.EnQueue('c');
q2.EnQueue('w');
q2.EnQueue('q');
q2.EnQueue('z');
cout<<q1.isFull()<<endl;
cout<<q2.isFull()<<endl;
q1.travel();
q2.travel();
q1.DeQueue(a);
q1.DeQueue(b);
cout<<a<<" "<<b<<endl;
q1.travel();
q2.DeQueue(c);
q2.DeQueue(d);
cout<<c<<" "<<d<<endl;
q2.travel();
q1.EnQueue(11);
q2.EnQueue('y');
q1.travel();
q2.travel();
return 0;
}
//打印结果
1
1
1
1
6 7 8 9 10
c w q z
6 7
8 9 10
c w
q z
8 9 10 11
q z y
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++ 数据结构