C++ 类模板

自己写的一个Queue功能的类模板:

/*my_queue.h*/
#include<iostream>
using namespace std;
template <class T> class QueueItem ;
template <class Type> class Queue ;

template <class T>
class QueueItem{
	public:
		T val ;
		QueueItem *next ;
};

template <class Type>
class Queue{
	public:
		Queue() : front(0) , back(0) {}
		~Queue() ;
		Type remove() ;
		void add(Type ) ; 
		bool is_empty() {return front == 0 ;}
		void print() ;
	private:
		QueueItem<Type> *front ;
		QueueItem<Type> *back ;	
} ;

template <class Type>
Queue<Type>::~Queue(){
	QueueItem<Type> *pstr ,*p;
	pstr = front  ;
	p = pstr ;
	while(pstr != back){
		p = pstr ;
		pstr = pstr->next ;
		delete p ;	
	}
	delete pstr ;
}

template <class Type>
inline void Queue<Type>::print(){
	QueueItem<Type>* pstr ;
	pstr = front ;
	int i = 1 ;
	while(pstr!=back && pstr){
		cout<<"value "<<i<<"  "<<pstr->val<<endl ;
		pstr = pstr->next ;	 i ++ ;
	}	
	if(pstr)
		cout<<"value "<<i<<"  "<<pstr->val<<endl ;
}

template <class Type>
inline void Queue<Type>::add(Type val){
	QueueItem<Type>* pstr ;
	pstr = new QueueItem<Type> ;
	pstr->val = val ;
	pstr->next = 0 ;
	
	if(is_empty()){
		front = back = pstr ;			
	}
	else{
		back->next = pstr ;
		back = pstr ;		
	}
}

template <class Type>
inline Type Queue<Type>::remove(){
	Type val ;
	QueueItem<Type>* pstr;
	if(!is_empty()){
		if(front != back){
			pstr = front ;
			val = front->val ;
			front = front->next ;
			delete pstr ;
		}
		else{
			val = front->val ;
			front = back = 0 ;
			delete pstr ;	
		}
		return val ;
	}		
	else{
		cout<<"There is no elements in the queue."<<endl ;
	}
}


main函数的实现:

#include<iostream>
#include"my_queue.h"
#include<string>
Queue<string> que ;
int main(){
	string s  ;
	for(int i=1;i<=5;++i){
		cin>>s ;
		que.add(s) ;
	}	
	que.print(); 
	cout<<"----------After remove --------"<<endl ;
	que.remove() ;
	que.print() ;
	system("pause");	
	return 0 ;	
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值