2017-06-04 2 views
-4

J'ai créé une classe de file d'attente en utilisant array, qui doit contenir au plus deux entiers. Mais comment puis-je passer deux entiers à la matrice à la fois? using bool Queue :: enqueue (int, int)C++ passe deux entiers dans la file d'attente

De même j'ai besoin d'un dequeue() qui imprime les entiers et les jette loin de la file d'attente. Des suggestions pour accomplir cela?

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 
+0

Comment voulez-vous faire avec un int? –

+1

Rendez votre file d'attente générique et utilisez 'std :: pair '? –

Répondre

0

Pourquoi voulez-vous jouer avec la définition d'une file d'attente? On dirait qu'il y a un défaut dans votre conception. Cependant, je l'ai encore écrit un code de travail en utilisant un vecteur qui résoudra votre objectif (bien que je doute de ce que vous voulez réaliser par l'ajout/suppression de 2 articles dans les opérations enqueue/dequeue)

#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; 
} 
+0

En supposant que c'est probablement quelque chose comme un problème de devoirs, je ne pense pas que l'instructeur pour cette personne apprécierait un vecteur comme structure de données interne pour la création d'une file d'attente. Si la librairie standard devait être utilisée, pourquoi ne pas simplement utiliser un 'std :: queue' ou un' std :: dequeue'? –

+0

Eh bien, dans ce cas, je pense que j'ai aidé une activité contraire à l'éthique. Les devoirs sont censés être faits par l'élève lui-même sans aide extérieure ;-) –

+0

Pour de telles situations, il est préférable de ne pas répondre à la question elle-même et d'encourager l'étudiant à trouver lui-même la solution. Ne faites pas que poster du code, peut-être donner une idée de ce que la personne peut faire pour résoudre le problème. –