stacks and queues
DESCRIPTION
Stacks and Queues. Stacks. A stack is an abstract data structure, with some special properties: Insertion and deletion is only allowed at the end of the stack (usually called the top ) - PowerPoint PPT PresentationTRANSCRIPT
Stacks and Queues
RHS – SOC 2
Stacks
• A stack is an abstract data structure, with some special properties:– Insertion and deletion is only allowed at the
end of the stack (usually called the top)– Due to this restriction, elements are removed
from the stack in the opposite order in which they were added
– This is called LIFO order (Last In, First Out)
RHS – SOC 3
Stacks
public interface Stack<T>
{
void push(T element);
T pop();
T peek();
}
RHS – SOC 4
Stacks
A
B
C
D
push(A)
push(B)
push(C)
push(D)
A = pop()
B = pop()
C = pop()
D = pop()
RHS – SOC 5
Stacks
• Note that we have not stated exactly how a Stack is implemented
• Can be done in various ways (array, linked list, etc.)
• However, data structure should support efficient (O(1)) insertion and removal at the end of the collection
RHS – SOC 6
Stacks
• What are stacks used for…?– Expression evaluation– Memory management– …any situation where LIFO order is the
proper order for processing data
RHS – SOC 7
Stacks
RHS – SOC 8
Stacks
• The (in)famous HP15-C pocket calculator used Reverse Polish Notation for entering and evaluating expressions
• This notation is very closely related to stakcs
• Loved by many, hated by more…
RHS – SOC 9
Stacks
• 12 x 37 is not typed in as:
• but rather as:
1 2 x 3 7 =
1 2 E 3 7 xE
RHS – SOC 10
Stacks
12
37
X
Push(12)
Push(37)
Push(X)
12 = pop()
37 = pop()
X = pop()
Push(12 x 37)
444
RHS – SOC 11
Queues
• A queue is (also) an abstract data structure, with some special properties:– Insertion is only allowed at the end of the
queue (usually called the tail)– Deletion is only allowed at the start of the
queue (usually called the head)– Elements are removed from the stack in the
same order in which they were added– This is called FIFO order (First In, First Out)
RHS – SOC 12
Queues
public interface Queue<T>
{
void add(T element);
T remove();
T peek();
}
RHS – SOC 13
Queues
A
B
C
D
add(A)
add(B)
add(C)
add(D)
A = remove()
B = remove()
C = remove()
D = remove()
RHS – SOC 14
Queue
• Like for a Stack, a Queue can be implemented in various ways
• Data structure should support efficient (O(1)) insertion and removal at the start and end of the collection
• Linked list likely choice
RHS – SOC 15
Queue
• What are queues used for…?– Event handling– All situations where we need to process data
in the order it is produced, but cannot process data immediately
RHS – SOC 16
Stacks and Queues in Java
• Stack<T> is part of Java library, and can be used as-is
• Queue<T> is an interface!
• There are several implementations of the Queue interface availabe
• See the documentation for details
RHS – SOC 17
Exercises
• Review: R15.11, R15.12
• Programming: P15.11, P15.12