仿照栈类模版的定义,写一个队列的类模版,队列中数据的特点是“先进先出”,可以用一个一维数组来模拟一个队列,注意:栈中元素的进栈和出栈都是在栈顶进行的,而队列有所不同,元素入队列在队尾进行,元素出队列在队头进行,定义一个队列类如下所示,要求按类模版的定义格式完成成员函数的定义 template <class T> class queue { public: queue(int num); ~queue(); bool insert(T item); // 元素入队列函数 T remove(); //元素出队列函数 private: T *data; int maxCount; //队列的最大容量 int front,rear; //队头和队尾为数组下标 }; 主函数如下 int main() { queue<char> q( 3 ) ; q.insert( 'A' ) ; q.insert( 'B' ) ; q.insert( 'C' ) ; cout << q.remove() ; cout << q.remove() ; cout << q.remove() << endl; return 0; } 【样例输入】无 【样例输出】ABC
时间: 2023-12-28 20:04:15 浏览: 71
代码如下:
```cpp
#include<iostream>
using namespace std;
template <class T>
class queue {
public:
queue(int num);
~queue();
bool insert(T item); // 元素入队列函数
T remove(); // 元素出队列函数
private:
T *data;
int maxCount; // 队列的最大容量
int front,rear; // 队头和队尾为数组下标
};
template<class T>
queue<T>::queue(int num){
maxCount = num;
front = rear = 0;
data = new T[num];
}
template<class T>
queue<T>::~queue(){
delete []data;
}
template<class T>
bool queue<T>::insert(T item){
if((rear+1)%maxCount==front) return false;
data[rear] = item;
rear = (rear+1)%maxCount;
return true;
}
template<class T>
T queue<T>::remove(){
if(front==rear) return NULL;
T temp = data[front];
front = (front+1)%maxCount;
return temp;
}
int main() {
queue<char> q( 3 ) ;
q.insert( 'A' ) ;
q.insert( 'B' ) ;
q.insert( 'C' ) ;
cout << q.remove() ;
cout << q.remove() ;
cout << q.remove() << endl;
return 0;
}
```
阅读全文