回 帖 发 新 帖 刷新版面

主题:菜鸟问一下这道题怎么做,谢谢

实现一个较实用的队列类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个回复)

沙发

答应帮"她"查的,怪不得这么积极主动,嘿嘿
你这样定义这个类
 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;表明你想要顺序的哦。

板凳

构造循环队列吧

3 楼

#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];
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册