当前位置: 动力学知识库 > 问答 > 编程问答 >

java - Creating a toString within a queue of two stacks

问题描述:

I have created a queue using two stacks from a stack class that i have created. I am wondering if it is possible to be able to read out all of the elements in the queue in order without them being lost from the stack?

The question is: Can i create a toString inside MyQueue.java that will list the order of the queue.

Here are my two files

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

}

}

网友答案:

Fixed by adding

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

to the MyQueue.java

分享给朋友:
您可能感兴趣的文章:
随机阅读: