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 – SWC 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 – SWC 3
Stacks
public interface Stack<T>
{
void push(T element);
T pop();
T peek();
}
RHS – SWC 4
Stacks
A
B
C
D
push(A)
push(B)
push(C)
push(D)
A = pop()
B = pop()
C = pop()
D = pop()
RHS – SWC 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 – SWC 6
Stacks
• What are stacks used for…?– Expression evaluation– Memory management– …any situation where LIFO order is the
proper order for processing data
RHS – SWC 7
Stacks
RHS – SWC 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 stacks
• Loved by many, hated by more…
RHS – SWC 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 – SWC 10
Stacks
12
37
X
Push(12)
Push(37)
Push(X)
12 = pop()
37 = pop()
X = pop()
Push(12 x 37)
444
RHS – SWC 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 – SWC 12
Queues
public interface Queue<T>
{
void add(T element);
T remove();
T peek();
}
RHS – SWC 13
Queues
A
B
C
D
add(A)
add(B)
add(C)
add(D)
A = remove()
B = remove()
C = remove()
D = remove()
RHS – SWC 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 – SWC 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 – SWC 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