Я пытаюсь создать программу, которая будет печатать пользовательский ввод в первом порядке. В настоящее время я создал программу, которая выводит стек LIFO (последний раз в первый раз). Однако как я могу начать реализацию очереди, которая будет отображать вывод стека в порядке FIFO (первый в первом порядке).Я пытаюсь реализовать очередь, которая бы отменила стек и стек FIFO печати?
Мой код ниже:
import java.util.*;
public class stackReversal {
private class Node {
private String item;
private Node next;
}
private Node first = null;
public boolean isEmpty() {
return (first == null);
}
public void push(String s) {
Node node = new Node();
node.item = s;
node.next = first;
first = node;
}
public String pop() {
if (first == null)
throw new RuntimeException("Stack Empty!");
String result = first.item;
first = first.next;
return result;
}
public String popString() {
String result = "";
Node current = first;
while (current != null) {
result += current.item;
current = current.next;
}
return result;
}
public String toString() {
StringBuilder nodes = new StringBuilder();
Node node = first;
while (node != null) {
nodes.append(node.item).append("\n");
node = node.next;
}
if(isEmpty()) {
return "";
} else {
return nodes.toString().substring(0, nodes.toString().length());
}
}
class Queue{
Node first, last;
public void enqueue(Node n){
if(first == null){
first = n;
last = first;
}else{
last.next = n;
last = n;
}
}
public Node dequeue(){
if(first == null){
return null;
}else{
Node temp = new Node(first);
first = first.next;
return temp;
}
}
}
public static void main(String[] args)
{
stackReversal s = new stackReversal();
Scanner input = new Scanner(System.in);
System.out.print("Enter strings:");
String in = "";
while (!in.equals("end-of-input"))
{
in = input.nextLine();
if (in.equals("end-of-input"))
break;
else
s.push(in);
}
System.out.println("Strings:"+"\n" + s);
}
}
Пожалуйста, обратите внимание, что ваш код не компилируется, на самом деле использовать несуществующие конструктор класса 'Node' –
Почему обратные, вместо того, чтобы добавить элементы в очереди структуру, а не стек. В качестве альтернативы вы могли бы реализовать Deque (двухсторонняя очередь) https://en.wikipedia.org/wiki/Doubleendend_queue и получить как стеки, так и поведение в очереди. См. Также интерфейс 'Deque' https://docs.oracle.com/javase/7/docs/api/java/util/Deque.html –