C++数据结构,用数组(顺序结构)实现队列
浏览数:3692 

队列:先进先出,FIFO

实现原则:初始化队列,前端弹出,后端压入,循环使用,盘空,盘满(使用计数器count实现盘空盘满)

#include<iostream>
using namespace std;
class Queue{//顺序关系的队列结构
public:
Queue(int psize=10):data(new int[psize]),rear(0),front(0),size(psize),count(0){}
~Queue(void){
 if(data)
  delete[] data;
  data=NULL;    
}
void push(int pdata){
 if(full())
  throw OverFlow();  
 if(rear>=size)//防止队列溢出
  rear=0;
 data[rear++]=pdata;
 ++count;
}
int pop(){
 if(empty())
  throw UnderFlow();
 if(front>=size)//防止队列溢出
  front=0;
 --count;
 return data[front++];
}
bool empty(){
 return !count;
}
bool full(){
 return count>=size;
}
private:
class OverFlow:public exception{
public:
 const char* what() const throw(){
  return "上溢";
 }
};
class UnderFlow:public exception{
public:
 const char* what() const throw(){
  return "下溢";
 }
};
int *data;
int rear;
int front;
int count;
int size;
};
int main(){
try{
 int size;
 cout<<"pls input the size:";
 cin>>size;
 Queue q(size);
 for(int i=1;!q.full();i++)
  q.push(i);
 q.pop();
 q.push(100);
 while(!q.empty())
  cout<<q.pop()<<endl;
}

catch(exception& ex){

 cout << ex.what() << endl;

 return -1;

}

}

联系管理员
 
 
 
 
 工作时间
周一至周五 :9:30-17:30
免费建站
会员登录
登录
我的资料
留言
回到顶部