stacks and queues

16
Stacks and Queues

Upload: lalo

Post on 19-Jan-2016

41 views

Category:

Documents


0 download

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 Presentation

TRANSCRIPT

Page 1: Stacks and Queues

Stacks and Queues

Page 2: 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)

Page 3: Stacks and Queues

RHS – SWC 3

Stacks

public interface Stack<T>

{

void push(T element);

T pop();

T peek();

}

Page 4: Stacks and Queues

RHS – SWC 4

Stacks

A

B

C

D

push(A)

push(B)

push(C)

push(D)

A = pop()

B = pop()

C = pop()

D = pop()

Page 5: Stacks and Queues

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

Page 6: Stacks and Queues

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

Page 7: Stacks and Queues

RHS – SWC 7

Stacks

Page 8: Stacks and Queues

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…

Page 9: Stacks and Queues

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

Page 10: Stacks and Queues

RHS – SWC 10

Stacks

12

37

X

Push(12)

Push(37)

Push(X)

12 = pop()

37 = pop()

X = pop()

Push(12 x 37)

444

Page 11: Stacks and Queues

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)

Page 12: Stacks and Queues

RHS – SWC 12

Queues

public interface Queue<T>

{

void add(T element);

T remove();

T peek();

}

Page 13: Stacks and Queues

RHS – SWC 13

Queues

A

B

C

D

add(A)

add(B)

add(C)

add(D)

A = remove()

B = remove()

C = remove()

D = remove()

Page 14: Stacks and Queues

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

Page 15: Stacks and Queues

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

Page 16: Stacks and Queues

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