2016-11-29 8 views
-1

Я создал очередь, используя два стека из класса стека, который я создал. Мне интересно, возможно ли иметь возможность считывать все элементы в очереди, чтобы они не потерялись из стека?Создание toString в очереди из двух стеков

Вопрос: Могу ли я создать toString внутри MyQueue.java, который будет перечислять порядок очереди.

Вот мои два файла

MyQueue.java

import java.util.NoSuchElementException; 

public class MyQueue<T> { 
    private MyStack<T> stack1; // back of queue 
    private MyStack<T> stack2; // front of queue 

    public MyQueue() { 
     stack1 = new MyStack<T>(); 
     stack2 = new MyStack<T>(); 
    } 


    private void moveStack1ToStack2()throws Exception { 
     while (!stack1.isEmpty()) 
      stack2.push(stack1.pop()); 
    } 

    public boolean isEmpty() { 
     return stack1.isEmpty() && stack2.isEmpty(); 
    } 

    public T peek() throws Exception { 
     if (isEmpty()) throw new NoSuchElementException("Queue underflow"); 
     if (stack2.isEmpty()) moveStack1ToStack2(); 
     T result = stack2.peek(); 
     return result; 
    } 

    // add the item to the queue 
    public void enqueue(T item) throws Exception 
    { 
     stack1.push(item); 
    } 

    public T dequeue() throws Exception { 
     if (isEmpty()) throw new NoSuchElementException("Queue underflow"); 
     if (stack2.isEmpty()) 
     { 
      moveStack1ToStack2(); 
     } 
     return (T)stack2.pop(); 
    } 
    public int size() 
    { 
     return stack1.size() + stack2.size(); 
    } 


} 

MyStack.java

import java.util.ArrayList; 
import java.util.EmptyStackException; 

public class MyStack<T> { 
    private ArrayList<T> al; 

    public MyStack() { 
     al = new ArrayList<T>(); 
    } 

    public void push(T item) { 
     al.add(item); 
    } 

    public T pop() { 
     if (!isEmpty()) 
      return al.remove(size()-1); 
     else 
      throw new EmptyStackException(); 
    } 

    public boolean isEmpty() { 
     return (al.size() == 0); 
    } 

    public T peek() 
    { 
     if (!isEmpty()) 
      return al.get(size()-1); 
     else 
      throw new EmptyStackException(); 
    } 

    public int size() { 
     return al.size(); 
    } 

    public String toString() 
    { 
     return al.toString(); 
    } 
} 

ответ

-1

Fixed добавлением

public String toString() 
{ 
    return stack2.toString(); 
} 

к MyQueue.java