

Stack<Integer> s = new Stack<>(); |
Constructs an empty stack. |
s.push(1); |
Adds to the top of the stack; s is now [1, 2,
3]. (Following the toString method of the Stack
class, we show the top of the stack at the end.) |
int top = s.pop(); |
Removes the top of the stack; top is set to 3 and s
is now [1, 2]. |
head = s.peek(); |
Gets the top of the stack without removing it; head
is set to 2. |
boolean b = s.empty() |
Sets b to false. Same as s.size() == 0. |
Queue<Integer> q = new LinkedList<>(); |
The LinkedList class implements the Queue interface. |
q.add(1); q.add(2); q.add(3); |
Adds to the tail of the queue; q is now [1,
2, 3] |
int head = q.remove(); |
Removes the head of the queue; head is set to 1 and
q is [2, 3] |
head = q.peek(); |
Gets the head of the queue without removing it; head
is set to 2. |
boolean b = s.empty() |
Sets b to false. Same as s.size() == 0. |

PriorityQueue<Integer> q = new
PriorityQueue<>(); |
This priority queue holds Integer objects. In practice, you would use objects that describe tasks. |
q.add(3); q.add(1); q.add(2); |
Adds values to the priority queue. |
int first = q.remove(); |
Each call to remove removes the most urgent item: first
is set to 1, second to 2. |
int next = q.peek(); |
|
|
|
|
What does this code print?
Stack<Integer> s = new Stack<>(); Queue<Integer> q = new LinkedList<>(); PriorityQueue<Integer> p = new PriorityQueue<>(); s.push(1); s.push(3); s.push(2); while (s.size() > 0) q.add(s.pop()); while (q.size() > 0) p.add(q.remove()); while (p.size() > 0) System.out.print(p.remove() + " ");
When you see an opening parenthesis, push it on the stack. When you see a closing parenthesis, pop the stack. If the opening and closing parentheses don’t match The parentheses are unbalanced. Exit. If at the end the stack is empty The parentheses are balanced. Else The parentheses are not balanced.


If you read a number Push it on the stack. Else if you read an operand Pop two values off the stack. Combine the values with the operand. Push the result back onto the stack. Else if there is no more input Pop and display the result.

How do you write (3 + 4) x 5 + 6 in Reverse Polish?
| Number stack |
Operator stack |
Unprocessed input |
Comments |
| 3 + 4 |
|||
| 3 |
+ 4 |
||
| 3 |
+ |
4 |
|
| 4 3 |
+ |
No more input |
Evaluate the top |
| 7 |
The result is 7 |
| Number stack |
Operator stack |
Unprocessed input |
Comments |
| 3 * 4 + 5 |
|||
| 3 |
* 4 + 5 |
||
| 3 |
* |
4 + 5 |
|
| 4 3 |
* |
+ 5 |
* has higher precedence Evaluate the top |
| 12 |
+ |
5 |
Now push + |
| 5 12 |
+ |
No more input |
Evaluate the top |
| 17 |
The result is 17 |
| Number stack |
Operator stack |
Unprocessed input |
Comments |
| 3 * (4 + 5) |
|||
| 3 |
* (4 + 5) |
||
| 3 |
* |
(4 + 5) |
|
| ( * |
4 + 5) |
||
| 4 3 |
( * |
+ 5) |
|
| 4 3 |
+ ( * |
5) |
|
| 5 4 3 |
+ ( * |
) |
|
| 9 3 |
( * |
No more input |
Evaluate the top |
| 9 3 |
* |
Pop matching ( |
|
| 27 |
Evaluate the top—the result is 27 |
If you read a number Push it on the number stack. Else if you read a ( Push it on the operator stack. Else if you read an operator op While the top of the stack has a higher precedence than op Evaluate the top. Push op on the operator stack. Else if you read a ) While the top of the stack is not a ( Evaluate the top. Pop the (. Else if there is no more input While the operator stack is not empty Evaluate the top.

Push all paths from the point on which you are standing on a stack. While the stack is not empty Pop a path from the stack. Follow the path until you reach an exit, intersection, or dead end. If you found an exit Congratulations! Else if you found an intersection Push all paths meeting at the intersection, except the current one, onto the stack.