zoukankan      html  css  js  c++  java
  • 循环队列

    循环队列:解决了假溢出问题,让队列的应用更加灵活了一点。

    关键技巧:

    判断队空:front=rear

    判断队满:(rear+1)%size=front 当队尾指针指向队头指针的前一个指针时,队列已满,所以队列中最多可存size-1个元素。

    抽象数据类型表示:

    //循环队列抽象数据类型
    class CirQueue
    {
    public:
    	//构造函数、析构函数
    	CirQueue(int sz)
    	{
    		size=sz;
    		front=rear=0;		//初始化为0
    		data=new int[size];	//开辟这个队列存储空间
    	}
    	~CirQueue(){}
    	//入队、出队函数
    	bool EnQueue(const int x);
    	int DeQueue();
    	void Output();
    private:
    	int *data;		//队列元素指针
    	int front,rear;
    	int size;
    };
    

    关键算法:

    /*
    入队算法:
    1、
    */
    bool CirQueue::EnQueue(const int x)
    {
    	if((rear+1)%size==front)
    	{
    		cout<<"队列已满"<<endl;
    		return false;
    	}
    	else
    	{
    		data[rear]=x;
    		//技巧,处理假溢出情况
    		rear=(rear+1)%size;
    		return true;
    	}
    	
    }
    
    /*
    出队算法:
    1、
    */
    int CirQueue::DeQueue()
    {
    	int x;
    	if(rear==front)
    	{
    		cout<<"队列为空"<<endl;
    		return -1;
    	}
    	else
    	{
    		x=data[front];
    		front=(front+1)%size;
    		return x;
    	}
    }
    
    
    /*
    输出队列算法:
    1、
    */
    void CirQueue::Output()
    {
    	int temp=front;
    	while(temp!=rear)
    	{
    		cout<<data[temp]<<endl;
    		temp=(temp+1)%size;
    	}
    }
    

    主程序:

    int _tmain(int argc, _TCHAR* argv[])
    {
    	cout<<"--------------循环队列-----------"<<endl;
    	CirQueue cq(6);		//只能存size-1个元素
    	cq.EnQueue(1);
    	cq.EnQueue(2);
    	cq.EnQueue(3);
    	cq.EnQueue(4);
    	cq.EnQueue(5);
    	
    	cq.Output();
    
    	cout<<"第一个出队"<<cq.DeQueue()<<endl;
    	cout<<"第二个出队"<<cq.DeQueue()<<endl;
    	cq.Output();
    	cout<<"第三个出队"<<cq.DeQueue()<<endl;
    	cout<<"第四个出队"<<cq.DeQueue()<<endl;
    	cout<<"第五个出队"<<cq.DeQueue()<<endl;
    	cout<<"第六个出队"<<cq.DeQueue()<<endl;
    	cq.EnQueue(345);
    	cq.Output();
    	return 0;
    }
    

    测试结果:

    --------------循环队列-----------
    1
    2
    3
    4
    5
    第一个出队1
    第二个出队2
    3
    4
    5
    第三个出队3
    第四个出队4
    第五个出队5
    队列为空
    第六个出队-1
    345
    请按任意键继续. . .

  • 相关阅读:
    Python函数学习——作用域与嵌套函数
    Python函数学习——初步认识
    python-安装,设置环境变量(win10)
    python-正则表达式
    python-时间
    python-集合
    python-模块
    Python-sys模块,异常
    python-自定义异常,with用法
    python-异常
  • 原文地址:https://www.cnblogs.com/fistao/p/3099299.html
Copyright © 2011-2022 走看看