For some strange reason, whenever I print the size of the reversed stack (for testing purposes), I keep on getting 7. Why is that the case? Shouldn't the reversed stack be empty since nothing was pushed to it? Thanks!
public class QueueViaStacks {
static Stack original;
static Stack reversed;
// push everything into the first stack
public void enqueue(Object item) {
// create stack if it is not yet created
if (original == null)
original = new Stack();
original.push(item);
}
public Object dequeue() {
if (reversed == null)
reversed = new Stack();
System.out.println(reversed.size);
Object temp;
// reverse stack by copying everything from first stack to second stack
if (reversed.isEmpty()) {
while (original != null) {
temp = original.pop();
reversed.push(temp);
}
}
return reversed.pop();
}
public int size() {
return original.getSize() + reversed.getSize();
}
public static void main(String[] args) {
QueueViaStacks stack = new QueueViaStacks();
stack.enqueue('T');
stack.enqueue('E');
stack.enqueue('S');
stack.enqueue('T');
stack.enqueue('I');
stack.enqueue('N');
stack.enqueue('G');
stack.dequeue();
}
}
Below is my Stack class:
public class Stack {
static Node top;
static int size = 0;
public void push(Object item) {
Node t = new Node(item);
t.next = top;
top = t;
size++;
}
public Object pop() {
while (top != null) {
Object temp = top.item;
top = top.next;
size--;
return temp;
}
return null;
}
public int getSize() {
return size;
}
public boolean isEmpty() {
if (size == 0)
return true;
return false;
}
public void print(Stack stack) {
Node temp = top;
while (temp != null) {
System.out.println(temp.item);
temp = temp.next;
}
}
}
Stack(and howsizeis initialized).java.util.Stack?enqueue()anddequeue(). And your code does not even compile ifStackis supposed to bejava.util.Stack.