Presentation is loading. Please wait.

Presentation is loading. Please wait.

CS 171: Introduction to Computer Science II Stacks Ymir Vigfusson.

Similar presentations


Presentation on theme: "CS 171: Introduction to Computer Science II Stacks Ymir Vigfusson."— Presentation transcript:

1 CS 171: Introduction to Computer Science II Stacks Ymir Vigfusson

2 HHW1 still out! DDue Friday, 1/30 at 11:59pm

3  “Remember these, you shall, hmm?”

4  Java basics  OO and inheritance  Arrays and ArrayList  Abstract data types  Stacks  Queues

5  Data type  A data type is a set of values and a set of operations on those values ▪ Specific implementations, e.g. 32-bit signed int.  Abstract data type (ADT)  An abstract data type is a data type whose internal representation is hidden from the client ▪ No implementation, more a mathematical description

6  ADTs are implemented in Java as classes  Instance variables are private (hidden from the client)  Instance methods may be public (specified in the API) or private (organize the computation and hidden from the client)  Application programming interface (API)  specifies the behavior of an ADT including constructors and instance methods  Using ADTs  Create objects of implemented ADTs  Invoke instance methods to operate on data-type values

7  Standard system ADTs  Integer, Double, String, StringBuilder …  Data oriented ADTs – facilitate organizing and processing data  Point2D, Interval1D, Date, …  Collection ADTs – facilitate organizing and manipulating collections of data  Stack, Queue, Priority Queue, ArrayList, …

8  Definition and API  Intended behavior  Implementation  How to implement  Applications  How to use

9 Stacks A stack stores a set of elements but with only two main operations: Push: add an element to the top of the stack Pop: remove the top element of the stack. Pop always removes the last element that’s added to the stack. This is called LIFO (Last- In-First-Out).

10

11 Stacks –Examples A can of tennis balls – Imagine the entire can represents an array, and each ball is an element. – It only allows access to one element at a time: the last element. – If you remove the last element, you can then access the next-to-last element. – There is no way to directly access the element at the bottom.

12 Stacks – Another Example A dynamic list of tasks you perform everyday: – Imagine you start your day by working on task A. – At any time you may be interrupted by a co- worker asking you for temporary help on task B. – While you work on B, someone may interrupt you again for help on task C. – When you are done with C, you will resume working on B. – Then you go back to work on A. – Think about the sequence of tasks you perform.

13

14 Stack Example

15

16

17  Stacks are typically used as a programmer’s tool, not for storage  used for handling program calls and returns  used for data manipulations and problem solving ▪ E.g. reversing  Arrays (and others) are typically used as data storage structures ▪ E.g. personal records, inventories …

18

19

20

21

22  Definition and API  Intended behavior  Implementation  How to implement  Applications  How to use

23

24

25  Underflow: what happens if pop from an empty stack?  Throw exception  Overflow: what happens if push to a full stack?  Exception again  Use resizing array

26

27

28

29

30

31

32  What’s the cost of pushing/adding to a stack of size N?  Case 1: array resizing not required  Case 2: array resizing required

33

34

35  Definition and API  Intended behavior  Implementation  Implementation using fixed size array ▪ FixedCapacityStackOfStrings.java  Implementation using resizable array ▪ ResizingArrayStack.java (using generics)  Implementation using generics  Applications  How to use

36

37

38

39

40

41

42

43  Stack of strings using fixed-capacity array: FixedCapacityStackOfStrings.java FixedCapacityStackOfStrings.java  Generic stack using fixed-capacity array: FixedCapacityStack.java FixedCapacityStack.java  Generic stack using a resizing array: ResizingArrayStack.java ResizingArrayStack.java  Generic stack using a linked list (later): Stack.java Stack.java


Download ppt "CS 171: Introduction to Computer Science II Stacks Ymir Vigfusson."

Similar presentations


Ads by Google