Java - 将队列实现到堆栈中?

时间:2015-11-27 10:44:25

标签: java linked-list stack queue

我创建了下面的代码,我的意思是不要实现Stack和Queue。现在我已经实现了堆栈,因为我已经实现了Queue,所以我想知道在哪里以及如何实现Queue。记住我必须使用队列来提供堆栈,但我似乎绕过了那个:)

非常感谢任何帮助!

package stackandqueue;


import java.util.*;
import java.util.Stack;
import java.util.Queue;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.LinkedList;
import java.util.StringTokenizer;
import java.util.Arrays;

public class StackAndQueue 
{

public static void main(String[] args) throws IOException 
{
// Create three empty stacks of Bays.
// Bay 1 linked list
Queue<String> bayoneStack = new LinkedList<String>();
// Bay 2 linkd list.
Queue<String> baytwoStack = new LinkedList<String>();
// Bay 3 linked list
Queue<String> baythreeStack = new LinkedList<String>();


Queue<String> bayloadStack = new LinkedList<String>();



System.out.println("***********************************************");

// Open and read text file
String inputFileName = "PodData4.txt";
FileReader fileReader = new FileReader("PodData4.txt");

// Create the FileReader object
try (BufferedReader br = new BufferedReader(fileReader);)
{    
// Sort the data into the relevant linked list by type F, T or P.
String[] strings = br.readLine().split(",");
for (String str : strings)
{
    switch (str.charAt(0))
    {
        case 'F':
            bayoneStack.add(str);
            break;
        case 'T':
            baytwoStack.add(str);
            break;
        case 'P':
            baythreeStack.add(str);
            break;
        default:
            // In-case of invalid input

    }

    System.out.println(str);



}
} 
catch(IOException ex)
{
//handle exception;
}
finally
{
fileReader.close();
}
// Prints out the linked list stacks showing all Bays.
System.out.println("***********************************************");

System.out.println("Bay 1:Food: " + bayoneStack.toString());
System.out.println("Bay 2:Technical: " + baytwoStack.toString());
System.out.println("Bay 3:Personal: " + baythreeStack.toString());

}
}

1 个答案:

答案 0 :(得分:1)

您可以利用LinkedList实现Queue接口的事实:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.LinkedList;
import java.util.Queue;

public class Test {

  public static void main( String[] args ) throws IOException {
    // Create three empty stacks of Bays.
    // Bay 1 linked list
    Queue<String> bayoneStack = new LinkedList<String>();
    // Bay 2 linkd list.
    Queue<String> baytwoStack = new LinkedList<String>();
    // Bay 3 linked list
    Queue<String> baythreeStack = new LinkedList<String>();

    // Open and read text file
    String inputFileName = "PodData4.txt";
    FileReader fileReader = new FileReader( inputFileName );

    // Create the FileReader object
    try ( BufferedReader br = new BufferedReader( fileReader ); ) {
      // Sort the data into the relevant linked list by type F, T or P.
      String[] strings = br.readLine().split( "," );
      for ( String str : strings ) { 
        switch ( str.charAt( 0 ) ) {
          case 'F':
            bayoneStack.add( str );
            break;
          case 'T':
            baytwoStack.add( str );
            break;
          case 'P':
            baythreeStack.add( str );
            break;
          default:
            // In-case of invalid input
            System.out.println( "" );
        }
      }
    } catch ( IOException ex ) {
      // handle exception;
    } finally {
      fileReader.close();
    }
    // Prints out the linked list stacks showing all Bays.
    System.out.println( "Bay 1:Food: " + bayoneStack.toString() );
    System.out.println( "Bay 2:Technical: " + baytwoStack.toString() );
    System.out.println( "Bay 3:Personal: " + baythreeStack.toString() );

  }
}