zoukankan      html  css  js  c++  java
  • 顺序队列

    SeqQueue.h

    template<typename Type> class SeqQueue{
    public:
    	SeqQueue(int sz):m_nrear(0),m_nfront(0),m_ncount(0),m_nMaxSize(sz){
    		m_pelements=new Type[sz];
    		if(m_pelements==NULL){
    			cout<<"Application Error!"<<endl;
    			exit(1);
    		}
    	}
    	~SeqQueue(){
    		delete[] m_pelements;
    	}
    	void MakeEmpty();               //make the queue empty
    	bool IsEmpty();
    	bool IsFull();
    	bool Append(const Type item);   //insert data
    	Type Delete();                  //delete data
    	Type Get();                     //get data
    	void Print();                   //print the queue
    
    private:
    	int m_nrear;
    	int m_nfront;
    	int m_ncount;
    	int m_nMaxSize;
    	Type *m_pelements;
    	
    };
    
    template<typename Type> void SeqQueue<Type>::MakeEmpty(){
    	this->m_ncount=0;
    	this->m_nfront=0;
    	this->m_nrear=0;
    }
    
    template<typename Type> bool SeqQueue<Type>::IsEmpty(){
    	return m_ncount==0;
    }
    
    template<typename Type> bool SeqQueue<Type>::IsFull(){
    	return m_ncount==m_nMaxSize;
    }
    
    template<typename Type> bool SeqQueue<Type>::Append(const Type item){
    	if(IsFull()){
    		cout<<"The queue is full!"<<endl;
    		return 0;
    	}
    	m_pelements[m_nrear]=item;
    	m_nrear=(m_nrear+1)%m_nMaxSize;
    	m_ncount++;
    	return 1;
    }
    
    template<typename Type> Type SeqQueue<Type>::Delete(){
    	if(IsEmpty()){
    		cout<<"There is no element!"<<endl;
    		exit(1);
    	}
    	Type temp=m_pelements[m_nfront];
    	m_nfront=(m_nfront+1)%m_nMaxSize;
    	m_ncount--;
    	return temp;
    }
    
    template<typename Type> Type SeqQueue<Type>::Get(){
    	if(IsEmpty()){
    		cout<<"There is no element!"<<endl;
    		exit(1);
    	}
    	return m_pelements[m_nfront];
    }
    
    template<typename Type> void SeqQueue<Type>::Print(){
    	cout<<"front";
    	for(int i=0;i<m_ncount;i++){
    		cout<<"--->"<<m_pelements[(m_nfront+i+m_nMaxSize)%m_nMaxSize];
    	}
    	cout<<"--->rear"<<endl<<endl<<endl;
    }
    

    Test.cpp

    #include <iostream>
    using namespace std;
    
    #include "SeqQueue.h"
    
    int main(){
    	SeqQueue<int> queue(10);
    	int init[10]={1,6,9,0,2,5,8,3,7,4};
    	for(int i=0;i<5;i++){
    		queue.Append(init[i]);
    	}
    	queue.Print();
    
    	cout<<queue.Delete()<<endl;
    	queue.Print();
    
    	for(int i=5;i<10;i++){
    		queue.Append(init[i]);
    	}
    	queue.Print();
    
    	cout<<queue.Get()<<endl;
    
    	queue.MakeEmpty();
    	queue.Print();
    
    	queue.Append(1);
    	queue.Print();
    
    	return 0;
    }
    

  • 相关阅读:
    Eclipse / android studio 添加第三方jar包 步骤
    Android checkbox 自定义点击效果
    Android 程序打包和安装过程
    Android 基础
    (转)Genymotion安装virtual device的“unable to create virtual device, Server returned Http status code 0”的解决方法
    (转)eclipse 导入Android 项目 步骤
    微信开放平台注册 步骤
    Android Studio 初级安装
    数组
    作用域问题代码
  • 原文地址:https://www.cnblogs.com/rollenholt/p/2438203.html
Copyright © 2011-2022 走看看