在两个堆栈的队列中创建一个toString

时间:2016-11-29 22:10:47

标签: java arrays stack queue

我使用我创建的堆栈类中的两个堆栈创建了一个队列。我想知道是否有可能能够按顺序读出队列中的所有元素而不会从堆栈中丢失?

问题是:我可以在MyQueue.java中创建一个toString,它将列出队列的顺序。

这是我的两个文件

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 个答案:

答案 0 :(得分:-1)

通过添加

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

到MyQueue.java

相关问题