Значения очереди печати с использованием цикла - PullRequest
0 голосов
/ 30 ноября 2018
 package q;
import java.util.*;
class GFG
{
static class Queue
{
   static Stack<Integer> s1 = new Stack<Integer>();
   static Stack<Integer> s2 = new Stack<Integer>();
   static void Q(int x)
   {
       while (!s1.isEmpty())
       {
           s2.push(s1.pop());  
       }  
       s1.push(x);
       while (!s2.isEmpty())
       {
           s1.push(s2.pop());  
       }
   }
   static int dQ()
   {
       if (s1.isEmpty())
       {
           System.out.println("Q is Empty");
           System.exit(0);
       }
       int x = s1.peek();
       s1.pop();
       return x;
   }
}
public static void main(String[] args) { 
   Queue q = new Queue();
   q.Q(100);
   q.Q(200);
   q.Q(300);
   System.out.println(q.dQ());
   System.out.println(q.dQ());
   System.out.println(q.dQ());
}
}

Я выполняю задание, и для построения очереди требуется использовать два стека.Я сделал это, но у меня есть один вопрос.Как я могу напечатать значения, используя цикл вместо того, чтобы печатать их построчно?По какой-то причине это не работает.Я пытался написать:

while(q.dQ()!){
   System.out.println(q.dQ());}

но это неправильно

1 Ответ

0 голосов
/ 30 ноября 2018

Вы можете определить другой метод в своем классе очереди, чтобы проверить, пуста ли очередь.Что-то вроде:

static boolean isEmpty(){
   // returns true is both stacks are empty
   if(s1.isEmpty() && s2.isEmpty()){
       return true;
   }
   return false;
}

Затем вы можете напечатать очередь с циклом, как:

while(! q.isEmpty()){
   System.out.println(q.dQ());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...