Stacks contd.

35
1 ADS Lecture 11 Stacks contd.

description

Stacks contd. Singly Linked list-based Stack. Top of stack is head of list (can insert elements at head in constant time, at tail in linear time) To perform operation size in constant time, keep track of size via instance variable Implement generic stack using generic linked list. - PowerPoint PPT Presentation

Transcript of Stacks contd.

Page 1: Stacks  contd.

1ADS Lecture 11

Stacks contd.

Page 2: Stacks  contd.
Page 3: Stacks  contd.

ADS Lecture 11 3

Singly Linked list-based Stack

•Top of stack is head of list (can insert elements at head in constant time, at tail in linear time)•To perform operation size in constant time, keep track of size via instance variable• Implement generic stack using generic linked list

e1 e2 e3 e4 nullhead

e2 e3 e4 nullhead

e5 e2 e3 e4 nullhead

pop()

push(e5)

Page 4: Stacks  contd.

A Generic NodeStack Class

ADS Lecture 114

• Code given in next few slides • All methods are executed in constant time (except toString)

• In addition, space requirement is O(n), where n is current number of elements in stack

• Do not need a new exception to be created to handle overflow problems

• Use instance variable top to refer to head of list (null if list empty)

• To push new element e onto stack simply add to head of list, to pop simply remove head and return its element

Page 5: Stacks  contd.

NodeStack<E>

Page 6: Stacks  contd.

Node<E>

Page 7: Stacks  contd.

NodeStack<E>

Page 8: Stacks  contd.

NodeStack<E>

Page 9: Stacks  contd.

NodeStack<E>

Page 10: Stacks  contd.

NodeStack<E>

Page 11: Stacks  contd.

NodeStack<E>

Page 12: Stacks  contd.

NodeStack<E>

Page 13: Stacks  contd.

NodeStack<E>

Page 14: Stacks  contd.

NodeStack<E>

recursive

Page 15: Stacks  contd.

NodeStack<E>

recursive

Page 16: Stacks  contd.

Test

Page 17: Stacks  contd.

Test

Page 18: Stacks  contd.

Another example of using a stack… a (simple integer) Reverse Polish Calculator

Page 19: Stacks  contd.
Page 20: Stacks  contd.
Page 21: Stacks  contd.
Page 22: Stacks  contd.
Page 23: Stacks  contd.
Page 24: Stacks  contd.

Random fact #5

Page 25: Stacks  contd.

Random fact #5

In 1973, amongst physicist, computer scientists, …, the HP35was the “must have” item. It was cool, exotic (first commercial rpn calculator),and most importantly … it felt good!

“Felt good”? … the keys had a “click”, i.e. a push and then “click” like a micro switch. Really beautiful.

It cost me 1 month’s pay (about £70 as a student in 1973)

Page 26: Stacks  contd.

end of random fact #5

Page 27: Stacks  contd.

RPN Calculator

Page 28: Stacks  contd.

RPN Calculator

Page 29: Stacks  contd.

RPN Calculator

Use java Stack<String>

Page 30: Stacks  contd.

RPN Calculator

Use Stack methods as advertised

Page 31: Stacks  contd.

RPN Calculator

for each

Page 32: Stacks  contd.

RPN Calculator

User entered some data as a String. If input String is an integer push it onto the stack S

Cool code

Page 33: Stacks  contd.

RPN Calculator

Page 34: Stacks  contd.

RPN Calculator

NOTE: no exception handling in event of stack overflow or underflow

What is “overflow” and what is “underflow”?

Page 35: Stacks  contd.