c-queue?

#include <cstdlib>
#include <iostream>
using namespace std;

template <class T> 
class Queue  { 
public: 			        		// 队列的运算集
void clear();					// 变为空队列
bool enQueue(const T& item); 	// item入队,插入队尾,成功则返回真否则返回假
bool deQueue(T& item);     	// 返回队头元素并从队列中删除,成功则返回真
bool front(T& item);	       	// 返回队头元素,但不删除,成功则返回真
bool isEmpty(); 				// 返回真,若队列已空
bool isFull();       			// 返回真,若队列已满
}


template <class T> 
class arrQueue: public Queue<T> { 
private: 	
	int 	mSize; 						// 存放队列的数组的大小
	int 	front;							// 表示队头所在位置的下标
	int 	rear;							// 表示队尾所在位置的下标
	T 	    *qu;							// 存放类型为T的队列元素的数组
public: 								// 队列的运算集
   	arrQueue(int size)  {    				// 创建队列的实例
		mSize = size +1;					// 浪费一个存储空间,以区别队列空和队列满
		qu = new T[mSize];
		front = rear = 0;
}
   	~arrQueue()  {  					// 消除该实例,并释放其空间
		delete [] qu;
}
void clear() {						// 清空队列
	front = rear; 
}
   	bool enQueue(const T item)  { 			//  item入队,插入队尾
		if (((rear + 1 ) % mSize) == front) {
			cout << "队列已满,溢出" << endl;
			return false;
		}
		qu[rear] = item;
		rear = (rear +1) % mSize;  			// 循环后继
		return true;
	}
 	bool deQueue(T*item)  {     			// 返回队头元素并从队列中删除
		if ( front == rear)  {
			cout << "队列为空" << endl;
			return false;
		}
		*item = qu[front];
		front = (front +1) % mSize;
		return true;
 	}
    bool getFront(T* item) {	     			// 返回队头元素,但不删除
		if (front == rear)  {
			cout << "队列为空" << endl;
			return false;
		}
		*item = qu[front];
		return true;
	}
	void print() {	     			// 返回队头元素,但不删除
		if (front == rear)  {
			cout << "队列为空" << endl;
		}
		int p = front;
		while(p != rear ) {
              cout << qu[p] << " ";
              p =( p + 1)  % mSize;  
        } 
        cout << endl;
	}
};





int main(int argc, char *argv[])
{
  arrQueue<int> *tst;
  
  tst = new arrQueue<int>(10);
  
  
  int n,r ;
  cin >> n;
  while (n>0) {
        tst->enQueue(n);
        n--;
  }
  tst->print();
  
  cin >> n;
  tst->deQueue(&r);
  
  cout << "deleted is : " << r << endl;
  
  tst->getFront(&r);
  cout << "front is : " << r << endl;
  
  tst->print();
  
  
  cin >> n;
  
  
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值