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;
    }
    

  • 相关阅读:
    使用POI读取excel文件内容
    有序链表
    jQuery Validate验证框架详解
    怎样在VS2010中打开VS2012的项目
    在Win8.1系统下如何安装运行SQL Server 2005
    SQL2005 2008配置错误,无法识别的配置节 system.serviceModel machine.config配置文件有问题
    深入浅出学Spring Data JPA
    Java 学习摘要
    JFinal
    spring 4 + jpa(hibernate 3/4) + spring mvc 多数据源配置
  • 原文地址:https://www.cnblogs.com/rollenholt/p/2438203.html
Copyright © 2011-2022 走看看