CS 106 INTRODUCTION TO DATA...

84
CS 106 INTRODUCTION TO DATA STRUCTURES SPRING 2020 PROF. SARA MATHIESON HAVERFORD COLLEGE

Transcript of CS 106 INTRODUCTION TO DATA...

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!