2015-11-27 2 views
-2

Я создал код ниже, и я не хочу реализовывать Stack и Queue. Теперь я реализовал Stack, считая, что я реализовал Queue, поэтому мне интересно, где и как я могу реализовать Queue. Имея в виду, я должен кормить стеки с помощью очереди, но я, кажется, обошел это:Java - реализация очереди в стек?

Любая помощь очень ценится!

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()); 

} 
} 
+0

Вы можете исправить ваш отступы, пожалуйста? – khelwood

+0

Пожалуйста, задайте четкий, конкретный вопрос. Что ты хочешь делать? Какой результат вы ожидаете от определенного ввода? Что такое «F», «T» и «P»? – Manu

+0

Итак, я получаю вывод (SHOWN BELOW), я хочу, но мне нужно реализовать очередь в коде. Но я не знаю, где его реализовать. Bay 1: Еда: [F99, F14, F58, F77, F63, F53] Залив 2: Технический: [T16, T17, T63, T99, T88, T02] Залив 3: Личный: [P34, P88, P02, P76, P14, P24] – DParker

ответ

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()); 

    } 
} 
+0

Doe это не значит, что теперь я игнорирую элемент стека в коде? – DParker

+0

Его просто пример реализации для вашего кода с очередями. Если вам нужно обоим, вам, вероятно, нужно переименовать beyoneStack в приведенном выше примере на beyoneQueue и дублировать добавление. Или вы заполняете очередь, а затем вызываете в свой стек «addAll (queue)». –

+0

Не могли бы вы привести мне пример вызова в моей части стека? Не то, что продвинулось с Java еще и извините за поздний ответ. Я редактировал исходный код, чтобы показать новые обновления. – DParker

Смежные вопросы