2016-12-04 13 views
0

スタックに数値を格納するとキューに印刷したいのですが、キューに同じ数値を再度格納して印刷するか、別の方法がありますそれ ?スタックに数値を格納し、キューに印刷します。

import java.util.Stack; 
import java.util.PriorityQueue; 
import java.util.Scanner ; 

public class Qa { 

    public static void main(String[] args) { 

     Scanner input = new Scanner (System.in); 

     Stack<Integer> A =new Stack<Integer>(); 

     System.out.println(" the numbers should be less than 99 "); 
     int x = input.nextInt() ; 

     while(x> 0 && x < 99){ 

      A.push(x); 


     } 

     PriorityQueue<String> B =new PriorityQueue<String>(); 


    } 

答えて

2

キューは基本的にFIFOです。まず要素をスタックに格納します。要素をポップし、別のスタックにもう一度格納します。次に、FIFO(キュー)として取得する要素をポップします。

+0

ありがとうたくさん:) – alex213

0

リストをスタックの内容で初期化し、リストから印刷できますか?あなたはリストの最後の要素から最初まで印刷することができます

0

私はあなたが何をしたいのか分かりませんが、数字が保存されていれば、再度保存する必要はありません。あなたは[first - > last]または[last - > first]からそれらを読み込むことができます。コードで 例はここにある:それと

あなたはメモリと時間を節約できます。 :)

0

何らかの理由でスタック構造を使用しているとしますが、結果が同じで、単純なリストにデータを格納していて、実行したいことに応じてそのリストを使用するとします。複雑なデータ構造上で必要なデータの重複や不要なループを作成する必要がないため、時間とスペースを節約できます。 これが役立つことを願っています。

+0

質問:配列、リスト、APIクラス、その他のデータ構造は許可されていないので、私はリストを使用しませんでした:) – alex213

+0

あなたの時間を共有してくれてありがとう:) – alex213

0

java.util.Stack ListのようにIterableが注文されています。 forループ(またはJava 8では.forEach)を使用してスタックを反復処理することで、要素を挿入順に取得できます。

私は、以下の例のコードと出力を貼り付けています:

public class MyApp { 
    public static void main(String[] args) { 
    Stack<Integer> myInts = new Stack<>(); 

    for (int i = 0; i < 5; i++) { 
     myInts.push(i); 
    } 

    System.out.println("ITERATING:"); 

    myInts.forEach(System.out::println); 

    System.out.println("\nPOPPING:"); 

    while(!myInts.isEmpty()) { 
     System.out.println(myInts.pop()); 
    } 
    } 
} 

出力は次のとおりです。

ITERATING: 
0 
1 
2 
3 
4 

POPPING: 
4 
3 
2 
1 
0 

あなたはStackを反復あれば、それは順番に番号を返すことがわかり挿入。スタックの内容を印刷するだけであれば、この方法にはpop()を呼び出してスタックを変更する必要がないという利点があります。

関連する問題