350 likes | 456 Views
Learn to create a generic stack using a singly linked list in Java, with constant-time operations and O(n) space. No exceptions for overflow; push and pop efficiently. Includes a fun fact about the HP35 RPN calculator!
E N D
Stacks contd. ADS Lecture 11
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 pop() head head e3 e1 e2 e3 e4 e2 e4 e5 e2 e3 e4 null null head null push(e5) ADS Lecture 11
A Generic NodeStack Class • 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 4 ADS Lecture 11
NodeStack<E> recursive
NodeStack<E> recursive
Another example of using a stack … a (simple integer) Reverse Polish Calculator
Random fact #5 In 1973, amongst physicist, computer scientists, …, the HP35 was 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)
RPN Calculator Use java Stack<String>
RPN Calculator Use Stack methods as advertised
RPN Calculator for each
RPN Calculator User entered some data as a String. If input String is an integer push it onto the stack S Cool code
RPN Calculator NOTE: no exception handling in event of stack overflow or underflow What is “overflow” and what is “underflow”?