cs 106 introduction to data...
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/1.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/2.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/3.jpg)
• 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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/4.jpg)
• 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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/5.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/6.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/7.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/8.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/9.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/10.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/11.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/12.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/13.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/14.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/15.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/16.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/17.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/18.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/19.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/20.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/21.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/22.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/23.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/24.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/25.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/26.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/27.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/28.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/29.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/30.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/31.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/32.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/33.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/34.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/35.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/36.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/37.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/38.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/39.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/40.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/41.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/42.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/43.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/44.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/45.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/46.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/47.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/48.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/49.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/50.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/51.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/52.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/53.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/54.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/55.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/56.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/57.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/58.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/59.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/60.jpg)
• 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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/61.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/62.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/63.jpg)
• 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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/64.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/65.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/66.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/67.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/68.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/69.jpg)
• 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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/70.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/71.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/72.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/73.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/74.jpg)
![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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/75.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/76.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/77.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/78.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/79.jpg)
• 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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/80.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/81.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/82.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/83.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081613/5fb5e97a6895274ccb14955b/html5/thumbnails/84.jpg)
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!