函数模板实现队列Queue(静态数组)

模板设计

首先创建一个模板类queue,这个queue中有保护元素:对应类型元素的指针、记录当前已有多少元素的整形变量count,当queue要插入新的元素时,count自增,直接添加到数组的末尾,删除时,count自减,其对应的指针指向的静态数组删除第一位元素,其余元素均相前移动一位。该类拥有自己的成员函数,用来返回该queue的大小、队首和队尾的元素的值以及判断该队列是否为空。

功能设计

在这里插入图片描述

代码

–main.cpp

#include <iostream> 
using namespace std;
#define MAXSIZE 1000
#include "myqueue.h"

int main()
{
   queue <int > que;  
   cout<<"将 1 入队"<<endl; 
   que.push(1);
   cout<<"将 2 入队"<<endl; 
   que.push(2);
   cout<<"将 3 入队"<<endl; 
   que.push(3);
   int a = que.front();
   cout << "队首元素是:"<< a << endl;  
   a = que.back();
   cout << "队尾元素是:"<< a << endl; 
   cout<< "队列的大小:"<< que.size() <<endl;
   cout<<"删除队列首元素"<<endl;
   que.pop();
   a = que.front();
   cout << "队首元素是:"<< a << endl;  
   a = que.back();
   cout << "队尾元素是:"<< a << endl;
   cout<< "队列的大小:"<< que.size() <<endl;
   cout<<"队列为空嘛?0表示空,1 相反,结果为:"<<que.empty()<<endl; 
   return 0;
}
/*
q.empty()// 如果队列为空返回true,否则返回false  
q.size() // 返回队列中元素的个数  
q.pop()  //删除队列首元素但不返回其值  
q.front()  // 返回队首元素的值,但不删除该元素  
q.push(X) //在队尾压入新元素 ,X为要压入的元素
q.back() //返回队列尾元素的值,但不删除该元素  
*/


myqueue.h

#include <iostream> 
using namespace std;
#define MAXSIZE 1000

template <typename T > 

class queue
{
	protected:
	    T*  data;
	    int count;
	public:
	    queue(){
		    data = new T[MAXSIZE];
	        count = 0;
	    }
	    ~ queue(){ delete [] data; }
	    
	    int size(){
	    	return count;
		}
	    void push(T a)
	    {
	        data[ count++ ] = a;
	    }
	    void pop()
	    {
	    	if ( count == 0 )  ; 
	        for(int i=0;i<count-1;i++) data[i] = data[i+1];
	        count--;
		}
	    T back()
	    {
	        if ( count == 0 )  ;
	        T a =  data[ count - 1 ]; 
	        return a;
	    }
	    T front()
	    {
	        if ( count == 0 )  ;
	        T a =  data[ 0 ]; 
	        return a;
	    }
	    bool empty()
	    {
	        if ( count == 0 ) return false;
	        return true;
	    }
}; 

测试结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值