c ++将两个整数传递给队列

时间:2017-06-04 17:10:54

标签: c++ queue

我使用数组创建了一个队列类,它必须最多包含两个整数。但是我如何一次将两个整数传递给数组呢?使用bool Queue :: enqueue(int,int)

我还需要一个dequeue(),它打印两个整数并将它们从队列中抛出。有任何建议如何实现这一目标?

class Queue {
private:
  int * table;
  int front;
  int length;
  const int size=2;
public:
  Queue(int n);
  ~Queue();
  bool isEmpty();
  bool enqueue(int, int);
  bool dequeue();
  void print();
};

Queue::Queue(int n){
n=size;
length=0;
front=0;
table=new int[n];
}

Queue::~Queue(){
delete [] table;
}

bool Queue::isEmpty(){
if(length==size)
    return false;
else
    return true;
}

bool Queue::enqueue(int , int){
if (length == size)
  return -1; // Error, Queue is full
now i need to pass two integers if it it empty

1 个答案:

答案 0 :(得分:0)

为什么要使用队列的定义?好像你的设计有一个缺陷。但是我仍然使用向量编写了一个可以解决你的目的的工作代码(虽然我怀疑你想通过在入队/出队操作中添加/删除2个项目来实现什么)

#include <iostream>
#include <vector>

using namespace std;

class Queue {

  vector<int> table;
  const int CAPACITY = 2;

public:
  bool isEmpty();
  bool enqueue(int, int);
  void dequeue();
  void print();
};

bool Queue::isEmpty(){
    if(table.size())
        return false;
    else
        return true;
}

bool Queue::enqueue(int a, int b){
    if (table.size())
        return false; // Error, Queue is full
    table.push_back(a);
    table.push_back(b);
    return true;
}

void Queue::dequeue(){
    if(!table.size())
        return; //queue is empty
    table.pop_back();
    table.pop_back();
}

void Queue::print(){
    if(!table.size()){
        cout << "Queue is empty" << endl;
        return;
    }
    cout << table[0] << "," << table[1] << endl;
}

int main()
{
    //Make a variable of our container
    Queue queue;
    queue.enqueue(1,2);
    queue.print();
    queue.dequeue();
    queue.print();
    return 0;
}