+ All Categories
Home > Documents > CS 106 INTRODUCTION TO DATA...

CS 106 INTRODUCTION TO DATA...

Date post: 14-Aug-2020
Category:
Upload: others
View: 1 times
Download: 0 times
Share this document with a friend
84
CS 106 INTRODUCTION TO DATA STRUCTURES SPRING 2020 PROF. SARA MATHIESON HAVERFORD COLLEGE
Transcript
Page 1: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

CS 106INTRODUCTION TO DATA STRUCTURES

SPRING 2020

PROF. SARA MATHIESONHAVERFORD COLLEGE

Page 2: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

ADMIN

• Lab 3 due Sunday

• Extra Office Hour TODAY! 5-6pm (H110)

• Sign up for peer tutoring

• CS dept Collaboration policy

https://www.haverford.edu/academic-resources/peer-tutoring/find-tutor

https://docs.google.com/document/d/1o-V4qewRIyfhZe5S8BfjO_FRQ0FKMk8Ac3RCZ3rHrIg/edit

Page 3: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

• Review check-in, recap Stacks

• Lab 3 suggestions

• Abstract Data Types (ADTs) and interfaces

• Implementing stacks

• Queues (theory and implementation)

FEB 27 OUTLINE

Page 4: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

• Review check-in, recap Stacks

• Lab 3 suggestions

• Abstract Data Types (ADTs) and interfaces

• Implementing stacks

• Queues (theory and implementation)

FEB 27 OUTLINE

Page 5: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

HANDOUT 12

Page 6: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

HANDOUT 12

main

dataz

7 10 4

2

Page 7: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

HANDOUT 12

main

dataz

7 10 4

2

addlstxn

2

3

Note: i omitted for simplicity

Page 8: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

HANDOUT 12

main

dataz

7 10 4

2

addlstxn

2

3

9 12 6

Note: i omitted for simplicity

Page 9: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

HANDOUT 12

main

dataz

7 10 4

2

addlstxn

2

3

9 12 6

9 12 6

Note: i omitted for simplicity

Page 10: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

HANDOUT 12

Page 11: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

HANDOUT 12

void push(E element) // add element to top of stackE pop() // remove and return topE peek() // view top but don’t removeboolean isEmpty() // check if emptyint size() // number of elements

Page 12: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

HANDOUT 12

void push(E element) // add element to top of stackE pop() // remove and return topE peek() // view top but don’t removeboolean isEmpty() // check if emptyint size() // number of elements

Constant! O(1)Stacks are fast by limiting functionality

Page 13: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

HANDOUT 12

stack

Page 14: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

HANDOUT 12

7 15

stack

Page 15: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

HANDOUT 12

7 2 15 8

stack

15 – 7 = 8

Page 16: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

HANDOUT 12

7 2 415 8 16

stack

15 – 7 = 88 * 2 = 16

Page 17: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

HANDOUT 12

7 2 415 8 16 4

stack

15 – 7 = 88 * 2 = 1616 / 4 = 4

return: 4

Page 18: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

HANDOUT 12

Page 19: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

HANDOUT 12

Array containing the dataInteger representing the top of the stack

Difficult to add more elements once the stack is full!

Page 20: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

Fibonacci Stack Example

Page 21: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

FIBONACCI NUMBERS

Page 22: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

fib(5)

Function StackLine ALine BLine C

A

currentline

fib(5)

FIBONACCI FUNCTION STACK

Page 23: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

fib(5)

fib(5)A

FIBONACCI FUNCTION STACK

fib(4)

fib(4)A

currentline Function StackLine A

Line BLine C

Page 24: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

fib(5)

fib(5)A

FIBONACCI FUNCTION STACK

fib(4)

fib(4)A

fib(3)

fib(3)A

currentline Function StackLine A

Line BLine C

Page 25: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

fib(5)

fib(5)A

FIBONACCI FUNCTION STACK

fib(4)

fib(4)A

fib(3)

fib(3)A

fib(2)Afib(2)

currentline Function StackLine A

Line BLine C

Page 26: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

fib(5)

fib(5)A

FIBONACCI FUNCTION STACK

fib(4)

fib(4)A

fib(3)

fib(3)A

fib(2)Afib(2)

fib(1)

fib(1) return 1

currentline Function StackLine A

Line BLine C

Page 27: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

fib(5)

fib(5)A

FIBONACCI FUNCTION STACK

fib(4)

fib(4)A

fib(3)

fib(3)A

fib(2)Bfib(2)

1

out1=1

currentline Function StackLine A

Line BLine C

Page 28: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

fib(5)

fib(5)A

FIBONACCI FUNCTION STACK

fib(4)

fib(4)A

fib(3)

fib(3)A

fib(2)Bfib(2)

1

fib(0) return 1

fib(0)

out1=1

currentline Function StackLine A

Line BLine C

Page 29: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

fib(5)

fib(5)A

FIBONACCI FUNCTION STACK

fib(4)

fib(4)A

fib(3)

fib(3)A

fib(2)Cfib(2)

1 1

out1=1out2=1

currentline Function StackLine A

Line BLine C

Page 30: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

fib(5)

fib(5)A

FIBONACCI FUNCTION STACK

fib(4)

fib(4)A

fib(3)

fib(3)A

fib(2)fib(2)

1 1

return 2

currentline Function StackLine A

Line BLine C

Page 31: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

fib(5)

fib(5)A

FIBONACCI FUNCTION STACK

fib(4)

fib(4)A

fib(3)

fib(3)B

2

1 1out1=2

currentline Function StackLine A

Line BLine C

Page 32: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

fib(5)

fib(5)A

FIBONACCI FUNCTION STACK

fib(4)

fib(4)A

fib(3)

fib(3)B

2

1 1out1=2

fib(1) return 1fib(1)

currentline Function StackLine A

Line BLine C

Page 33: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

fib(5)

fib(5)A

FIBONACCI FUNCTION STACK

fib(4)

fib(4)A

fib(3)

fib(3)C

2

1 1out1=2

1

out2=1

currentline Function StackLine A

Line BLine C

Page 34: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

fib(5)

fib(5)A

FIBONACCI FUNCTION STACK

fib(4)

fib(4)A

fib(3)

fib(3)

2

1 1

1

return 3

currentline Function StackLine A

Line BLine C

Page 35: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

fib(5)

fib(5)A

FIBONACCI FUNCTION STACK

fib(4)

fib(4)B

3

2

1 1

1

out1=3

currentline Function StackLine A

Line BLine C

Page 36: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

fib(5)

fib(5)A

FIBONACCI FUNCTION STACK

fib(4)

fib(4)B

3

2

1 1

1

out1=3fib(2)

fib(2)

A

currentline Function StackLine A

Line BLine C

Page 37: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

fib(5)

fib(5)A

FIBONACCI FUNCTION STACK

fib(4)

fib(4)B

3

2

1 1

1

out1=3fib(2)

fib(2)

A

fib(1) return 1fib(1)

currentline Function StackLine A

Line BLine C

Page 38: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

fib(5)

fib(5)A

FIBONACCI FUNCTION STACK

fib(4)

fib(4)B

3

2

1 1

1

out1=3fib(2)

fib(2)

B

1

out1=1

currentline Function StackLine A

Line BLine C

Page 39: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

fib(5)

fib(5)A

FIBONACCI FUNCTION STACK

fib(4)

fib(4)B

3

2

1 1

1

out1=3fib(2)

fib(2)

B

1

out1=1fib(0)

fib(0)return 1

currentline Function StackLine A

Line BLine C

Page 40: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

fib(5)

fib(5)A

FIBONACCI FUNCTION STACK

fib(4)

fib(4)B

3

2

1 1

1

out1=3fib(2)

fib(2)

C

1

out1=1

1

out2=1

currentline Function StackLine A

Line BLine C

Page 41: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

fib(5)

fib(5)A

FIBONACCI FUNCTION STACK

fib(4)

fib(4)B

3

2

1 1

1

out1=3fib(2)

1 1

return 2

fib(2)

currentline Function StackLine A

Line BLine C

Page 42: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

fib(5)

fib(5)A

FIBONACCI FUNCTION STACK

fib(4)

fib(4)C

3

2

1 1

1

out1=3

2

1 1

out2=2

currentline Function StackLine A

Line BLine C

Page 43: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

fib(5)

fib(5)A

FIBONACCI FUNCTION STACK

fib(4)

3

2

1 1

1

2

1 1

return 5

fib(4)

currentline Function StackLine A

Line BLine C

Page 44: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

fib(5)

fib(5)B

FIBONACCI FUNCTION STACK

5

3

2

1 1

1

2

1 1

out1=5

currentline Function StackLine A

Line BLine C

Page 45: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

fib(5)

fib(5)B

FIBONACCI FUNCTION STACK

5

3

2

1 1

1

2

1 1

out1=5fib(3)

fib(3)

A

currentline Function StackLine A

Line BLine C

Page 46: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

fib(5)

fib(5)B

FIBONACCI FUNCTION STACK

5

3

2

1 1

1

2

1 1

out1=5fib(3)

fib(3)

A

fib(2)

fib(2)

A

currentline Function StackLine A

Line BLine C

Page 47: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

fib(5)

fib(5)B

FIBONACCI FUNCTION STACK

5

3

2

1 1

1

2

1 1

out1=5fib(3)

fib(3)

A

fib(2)

fib(2)

A

fib(1)fib(1)

return 1

currentline Function StackLine A

Line BLine C

Page 48: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

fib(5)

fib(5)B

FIBONACCI FUNCTION STACK

5

3

2

1 1

1

2

1 1

out1=5fib(3)

fib(3)

A

fib(2)

fib(2)

B

1

out1=1

currentline Function StackLine A

Line BLine C

Page 49: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

fib(5)

fib(5)B

FIBONACCI FUNCTION STACK

5

3

2

1 1

1

2

1 1

out1=5fib(3)

fib(3)

A

fib(2)

fib(2)

B

1

out1=1

fib(0)fib(0) return 1

currentline Function StackLine A

Line BLine C

Page 50: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

fib(5)

fib(5)B

FIBONACCI FUNCTION STACK

5

3

2

1 1

1

2

1 1

out1=5fib(3)

fib(3)

A

fib(2)

fib(2)

C

1

out1=1

1

out2=1

currentline Function StackLine A

Line BLine C

Page 51: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

fib(5)

fib(5)B

FIBONACCI FUNCTION STACK

5

3

2

1 1

1

2

1 1

out1=5fib(3)

fib(3)

A

fib(2)

1 1

return 2

fib(2)

currentline Function StackLine A

Line BLine C

Page 52: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

fib(5)

fib(5)B

FIBONACCI FUNCTION STACK

5

3

2

1 1

1

2

1 1

out1=5fib(3)

fib(3)

B

2

1 1

out1=2

currentline Function StackLine A

Line BLine C

Page 53: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

fib(5)

fib(5)B

FIBONACCI FUNCTION STACK

5

3

2

1 1

1

2

1 1

out1=5fib(3)

fib(3)

B

2

1 1

out1=2

fib(1)

fib(1) return 1

currentline Function StackLine A

Line BLine C

Page 54: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

fib(5)

fib(5)B

FIBONACCI FUNCTION STACK

5

3

2

1 1

1

2

1 1

out1=5fib(3)

fib(3)

C

2

1 1

out1=2

1

out2=1

currentline Function StackLine A

Line BLine C

Page 55: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

fib(5)

fib(5)B

FIBONACCI FUNCTION STACK

5

3

2

1 1

1

2

1 1

out1=5fib(3)

2

1 1

1

return 3

fib(3)

currentline Function StackLine A

Line BLine C

Page 56: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

fib(5)

fib(5)C

FIBONACCI FUNCTION STACK

5

3

2

1 1

1

2

1 1

out1=5

3

2

1 1

1

out2=3

currentline Function StackLine A

Line BLine C

Page 57: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

fib(5)

FIBONACCI FUNCTION STACK

5

3

2

1 1

1

2

1 1

3

2

1 1

1

return 8

fib(5)

currentline Function StackLine A

Line BLine C

Page 58: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

8

FIBONACCI FUNCTION STACK

5

3

2

1 1

1

2

1 1

3

2

1 1

1

empty!

Function StackLine ALine BLine C

Page 59: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

fib(5)

fib(4) fib(3)

fib(3) fib(2) fib(2) fib(1)

fib(2) fib(1)

fib(1) fib(0)

fib(1) fib(0)fib(1) fib(0)

FIBONACCI TREE WITH FUNCTION CALLS

Line ALine BLine C

Page 60: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

• Review check-in, recap Stacks

• Lab 3 suggestions

• Abstract Data Types (ADTs) and interfaces

• Implementing stacks

• Queues (theory and implementation)

FEB 27 OUTLINE

Page 61: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

LAB 3 SUGGESTIONS

Top Down Design – think about what you want first, then implement it!

Note: there are different/better ways than above.

Page 62: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

LAB 3 SUGGESTIONSWorkflow:

* always be in a state where something is working* make a small change, test, repeat* don’t write lots of code without testing it!

This should print (alphabetical order):

Page 63: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

• Review check-in, recap Stacks

• Lab 3 suggestions

• Abstract Data Types (ADTs) and interfaces

• Implementing stacks

• Queues (theory and implementation)

FEB 27 OUTLINE

Page 64: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

ABSTRACT DATA TYPES (ADT)

• Mathematical/theoretical model of a data structure

• Specifies what data is stored

• Specifies the methods that operate on the data

• Says “what” but not “how”

• Practically: use an interface to specify ADT

See textbook: chapter 2 intro

Page 65: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

INTERFACES REVISITEDInterfaces are a way to separate the ideas / goals of a class or set of methods from the implementation:

• a collection of methods (with full signature, but no body)

• no instance variables (except for static final constants)

• method modifiers necessary - implicitly public but okay to

include

• no constructors and can not be instantiated

• a class implementing an interface must implement all

methods as specified

Page 66: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

INTERFACE EXAMPLEpublic interface Shape {

public double area();

}

Page 67: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

INTERFACE EXAMPLEpublic interface Shape {

public double area();

}

public class Circle implements Shape {

private double radius;

public double area(){

return Math.PI*radius*radius;

}

}

Page 68: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

INTERFACE EXAMPLEpublic interface Shape {

public double area();

}

public class Circle implements Shape {

private double radius;

public double area(){

return Math.PI*radius*radius;

}

}

public class Square implements Shape {

private double sideLength;

public double area(){

return sideLength*sideLength;

}

}

Page 69: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

• Review check-in, recap Stacks

• Lab 3 suggestions

• Abstract Data Types (ADTs) and interfaces

• Implementing stacks

• Queues (theory and implementation)

FEB 27 OUTLINE

Page 70: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

THE STACK ADTInsertion and deletions are Last In First Out – LIFOInsert at the topRemove from the top

Operations• push(Object)• Object pop()• Object peek()• int size()• boolean isEmpty()

Page 71: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

ARRAY-BASED STACKImplement the stack ADT with an arrayAdd elements onto the end of the arrayUse an int t to keep track of the top

data0 1 2 t

Page 72: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

PERFORMANCE AND LIMITATIONS

Page 73: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

PERFORMANCE AND LIMITATIONS

Extra practice: how could you implement a Stack with a LinkedList?

Page 74: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types
Page 75: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

CODING EXERCISEMake an ArrayStack class that implements a Stack interface:

public class ArrayStack<E> implements Stack<E>

•push(E element)•E pop()•E peek()•int size()•boolean isEmpty()

Page 76: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

STACK INTERFACE FROM CLASS

Page 77: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

STACK WITH ARRAY CODEpublic class ArrayStack<E> implements Stack<E> {public static final int CAPACITY = 1000;private E[] data;private int t = -1;

public ArrayStack(){this(CAPACITY);}

public ArrayStack(int capacity) {data = (E[]) new Object[capacity]);

}

public int size() {return (t+1);}

public boolean isEmpty() {return t == -1;}

public E peek() {if (isEmpty()) {return null;}return data[t];

}

Page 78: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

public E pop() {if isEmpty(){return null};E target = data[t];data[t] = null; // garbage collectiont--;return target;

}

public void push(E e) throws IllegalStateException {if (t == data.length-1) {throw new IllegalStateException("Stack is full");

} else {

// increment t then use t as index

t += 1data[t] = e;

}}

STACK WITH ARRAY CODE

Page 79: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

• Review check-in, recap Stacks

• Lab 3 suggestions

• Abstract Data Types (ADTs) and interfaces

• Implementing stacks

• Queues (theory and implementation)

FEB 27 OUTLINE

Page 80: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

QUEUES

How would you want a data structure to work for waiting in line at a store?

What is the rate of input is different than the rate of output?Example: people show up to the DMV at random times, but processing takes about the same time for each person

Define an abstract data type (ADT).

Page 81: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

THE QUEUE ADT

Insertions and deletions are First In First Out (FIFO)Insert at the backDelete from the front

Operations:• enqueue(Object)• Object dequeue()• Object first()• int size()• boolean isEmpty()

Page 82: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

IMPLEMENTING A QUEUEBrainstorm: using the data structures we know about, how could we implement this ADT?

Page 83: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

ARRAY-BASED QUEUE IMPLEMENTATIONAn array of size n in a circular fashionTwo ints to track front and size

• f: index of the front element• size: number of stored elements

Q

0 1 2 rf

normal configuration

Q

0 1 2 fr

wrapped-around configuration

Page 84: CS 106 INTRODUCTION TO DATA STRUCTUREScs.haverford.edu/faculty/smathieson/teaching/s20/lecs/lec12/lec12.pdf•Review check-in, recap Stacks •Lab 3 suggestions •Abstract Data Types

DESIGNING DATA STRUCTURES1. Make a Course object that can store a name and list of

students. Include relevant constructors, getters, and setters.

2. Make a LimitedEnrollmentCourse that has a cap on the number of students who can enroll. Have it inherit from Course.

3. Make addStudent, removeStudent, and getEnrolled methods that correctly handle limited versus unlimited enrollment.

Extra practice!


Recommended