循环队列的实现

实验4:栈和队列的基本操作实现及其应用

一、实验目的

1、 熟练掌栈和队列的结构特点,掌握栈和队列的顺序存储和链式存储结构和实现。

2、 学会使用栈和队列解决实际问题。

二、实验内容

1、 自己确定结点的具体数据类型和问题规模:

分别建立一个顺序栈和链栈,实现栈的压栈和出栈操作。

分别建立一个顺序队列和链队列,实现队列的入队和出队操作。

2、 设计算法并写出代码,实现一个十将二进制转换成2进制数。


循环队列的实现:

#include
   
   
    
    
using namespace std;
const int QueueSize=100;
 
class CirQueue
{
	public:
		CirQueue(){front=rear=QueueSize-1;}  //构造函数,初始化空队列 
		~CirQueue(){}       //析构函数 
		void EnQueue(int x);    //入队操作,将队列元素出队 
		int DeQueue();          //出队操作,将队头元素出队 
		int GetQueue();         //取队头元素(并不删除) 
		int Empty(){if(front==rear) return 1;else return 0;}   //判空 
	private:
		int data[QueueSize];     //存放队列元素的数组 
		int front,rear;          //队头和队尾指针 
}; 

void CirQueue::EnQueue(int x)
{
	if((rear+1)%QueueSize==front)throw"上溢"; 
	rear=(rear+1)%QueueSize;          //队尾指针在循环意义下加1 
	data[rear]=x;                   //在队尾处插入元素 
} 

int CirQueue::DeQueue()
{
	if(rear==front)throw"下溢";
	front=(front+1)%QueueSize;  //队头指针在循环意义下加1
	return data[front];      //读取并返回出队前的队头元素 
} 

int CirQueue::GetQueue()
{
	int i;
	if(rear==front) throw"下溢";
	i=(front+1)%QueueSize;      //注意不要给队头指针赋值 
	return data[i];
}

int main()

{   
  int x,n,d,flag,tab;
  CirQueue C; 
  flag=0;
	do{
		cout<<"输入你要的插入的数:"<
    
    
     
     >n;
		
		cout<<"是否继续插入(1/0)"<
     
     
      
      >d;
		C.EnQueue(n);
	}
	while(d);
	cout<
      
      
       
       <<"**********循环队列的实现**********"<
       
       
         < 
        
          >tab; switch(tab) { case 1:{ cout< 
         
           <<"输入你要的插入的数:"< 
          
            >x; C.EnQueue(x); break; } case 2: { cout< 
           
             <<"删除的数是 :"< 
             
            
           
          
         
       
      
      
     
     
    
    
   
   

执行结果截图:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值