2016-04-08 20 views
0

Ich versuche, die gerade oder ungerade Zahlen in verschiedenen Stapeln & Warteschlangen zu implementieren. Hier ist mein Code:C++ mit Stacks & Queues zu trennen gerade und ungerade Zahlen

Wie kann ich meine Stack & Warteschlange anzeigen? Wie kann ich in ungerade oder gerade in einer Warteschlange trennen?

#include <iostream> 
#include <stack> 
#include <queue> 
using namespace std; 

int main() 
{ 
stack <int> s1; 
queue <int> q1; 
int num[10]={0}; 

for(int i = 0; i < 10; i++) 
{ 
    cout << "Enter Number " << i << ": "; 
    cin >> num[i]; 

    s1.push(num[i]); 
} 

int s2; 
int q2; 
cout << "In Stack" << "\t" << "In Queue" << endl; 

while(!q1.empty()) 
{ 
    for(int i = 0; i <10; i++) 
    { 
     if(num[i]%2 == 0) 
     { 
      s2 = s1.top(); 
      s1.pop(); 
     } 
     else 
     { 
      q2 = q1.front(); 
      q1.pop(); 
     } 
    } 
    cout << s2 << "\t\t" << q2 << endl; 
} 

return 0; 
} 
+4

Selbst in einem Stapel und Odd in einer Warteschlange !? Es ist nicht klar, was Sie erreichen möchten –

+2

Sie können nicht über einen ['std :: stack'] (http://en.cppreference.com/w/cpp/container/stack) oder [' std :: iterieren: queue "] (http://en.cppreference.com/w/cpp/container/queue) direkt, so dass es keine Möglichkeit gibt, ihre Werte anzuzeigen, ohne die Elemente daraus zu entfernen. –

+0

Ich erstelle zwei Stapel und zwei Warteschlangen. Ich möchte alle geraden und ungeraden Zahlen in einem Stapel hinzufügen. Will auch das gleiche mit einer Warteschlange. –

Antwort

0

Als ich bemerkte, ich nehme an, Sie zwei Stapel und zwei Warteschlangen wollen. Odd geht zu einem ungeraden Stack-Container und einem ungeraden Queue-Container. Sogar wird ein gerader Stapelcontainer und ein gerader Warteschlangencontainer ebenfalls gehen.

Dies sollte funktionieren:

#include <stack> 
#include <queue> 

int main() 
{ 
    std::stack<int> MyOddStack; 
    std::queue<int> MyOddQueue; 

    std::stack<int> MyEvenStack; 
    std::queue<int> MyEvenQueue; 

    int MyNumbers[10]; 
    int InNum; 

    for (int i = 0; i < 10; i++) // take numbers from user and fill the container, the queue and the stack right away 
    { 
     std::cout << "Please enter number: " << std::endl; 
     std::cin >> InNum; 

     MyNumbers[i] = InNum; // put in the container 

     if (InNum % 2 == 0) // if even add to even queue and even stack 
     { 
      MyEvenQueue.push(InNum); 
      MyEvenStack.push(InNum); 
     } 
     else //else, add to odd queue and odd stack 
     { 
      MyOddQueue.push(InNum); 
      MyOddStack.push(InNum); 
     } 
    } 

    // You want to display any of the queues/stacks? 
    // put a for loop 
    // use .top() and/or .front() to display 
    // use .pop() everytime you display an element so you see the next element 

    return 0; 

} 
+0

Ja, ich möchte es zeigen, aber wie mache ich das? Ich habe eine Idee, aber ich verwechselte die .pop .front .front .back etc ... –

+0

@GabrielValedon Für den Stapel: siehe hier http://stackoverflow.com/questions/12631514/how-can-i-print-out -the-contents-von-stdstack-and-return-it-size und verwenden Sie die gleiche Technik aber .front() anstelle von .top() –

Verwandte Themen