主题:菜鸟问一下这道题怎么做,谢谢
yegouzhifu
[专家分:0] 发布于 2010-05-23 20:38:00
实现一个较实用的队列类Queue模板<a1,a2,...,an>并使用它
队列的说明,如我们可以定义一个整数队列类
队列是特殊的线性表(a1,a2,...,an)一端进,一端出
class queue{
Type data[100];//Type*data;
int n;
int capacity;//空间容量
public:
void push( Type e);//入队一个元素
void pop();//出对
Type front();//得到对头元素
};
我才大一没学到C++,但我一高中同学问我了,我答应帮她查的,拜托了
回复列表 (共3个回复)
沙发
耶路撒冷 [专家分:650] 发布于 2010-05-23 23:04:00
答应帮"她"查的,怪不得这么积极主动,嘿嘿
你这样定义这个类
class queue{
Type data[100];//Type*data;
int n;
int capacity;//空间容量
public:
void push( Type e);//入队一个元素
void pop();//出对
Type front();//得到对头元素
};
你到底是想要顺序的还是线性的?这个Type data[100];//Type*data;表明你想要顺序的哦。
板凳
howardqqme [专家分:20] 发布于 2010-05-28 14:47:00
构造循环队列吧
3 楼
effective_jian++ [专家分:30] 发布于 2010-05-30 00:36:00
#include<iostream>
using namespace std;
typedef int Type;
class queue{
Type data[100];//Type*data;
int n;
int capacity;// 空间容量
public:
queue();
void push( Type e);//入队一个元素
void pop();// 出对
Type front();//得到对头元素
};
queue::queue() { //先要用构造函数初始化
n = 0; //这个玩意我猜是指向队头的吧。。。
capacity = 0; //那这个就只能是指向队尾的了。。。
}
void queue::push(const Type e) { //注意在类声明里也在相应位置加const
if(((capacity+1)%100) == n ) //队列满,不继续添加
return;
data[capacity] = e;
capacity = (++capacity) % 100; //搞成循环队列吧还是。。。。
}
void queue::pop() {
if(capacity == n) //队列空,没法出了阿。。。
return;
n = (++n)%100;
}
Type queue::front() {
return data[n];
}
我来回复