stacks - gorski compscigorskicompsci.ca/ics4u/4_persistance/ppt6_stackcode.pdf · 2021. 1. 12. ·...
TRANSCRIPT
![Page 1: Stacks - Gorski CompScigorskicompsci.ca/ICS4U/4_Persistance/ppt6_StackCode.pdf · 2021. 1. 12. · ADT •Abstract Data Type •An standard object that is used for storing data; pop](https://reader036.vdocuments.mx/reader036/viewer/2022071514/6135905a0ad5d206764774fb/html5/thumbnails/1.jpg)
StacksAn example of a complex object
![Page 2: Stacks - Gorski CompScigorskicompsci.ca/ICS4U/4_Persistance/ppt6_StackCode.pdf · 2021. 1. 12. · ADT •Abstract Data Type •An standard object that is used for storing data; pop](https://reader036.vdocuments.mx/reader036/viewer/2022071514/6135905a0ad5d206764774fb/html5/thumbnails/2.jpg)
ADT•Abstract Data Type•An standard object that is used for storing
data; pop up frequently in coding.• They are well designed and coded• They do ONE task, really well. Nothing else.• Examples: Stack, Queue, Tree, Heap, Hash
Table
![Page 3: Stacks - Gorski CompScigorskicompsci.ca/ICS4U/4_Persistance/ppt6_StackCode.pdf · 2021. 1. 12. · ADT •Abstract Data Type •An standard object that is used for storing data; pop](https://reader036.vdocuments.mx/reader036/viewer/2022071514/6135905a0ad5d206764774fb/html5/thumbnails/3.jpg)
Stack - LIFO
•An standard object type (an ADT)•Last in, first out (LIFO)•Everything occurs to the top•Used for back and undo buttons; Also recursive calls (recall: Stack overflow)
![Page 4: Stacks - Gorski CompScigorskicompsci.ca/ICS4U/4_Persistance/ppt6_StackCode.pdf · 2021. 1. 12. · ADT •Abstract Data Type •An standard object that is used for storing data; pop](https://reader036.vdocuments.mx/reader036/viewer/2022071514/6135905a0ad5d206764774fb/html5/thumbnails/4.jpg)
Push = Add to the topPop = Remove from the top
You can’t do anything else.No sorting.
Stack Functions
![Page 5: Stacks - Gorski CompScigorskicompsci.ca/ICS4U/4_Persistance/ppt6_StackCode.pdf · 2021. 1. 12. · ADT •Abstract Data Type •An standard object that is used for storing data; pop](https://reader036.vdocuments.mx/reader036/viewer/2022071514/6135905a0ad5d206764774fb/html5/thumbnails/5.jpg)
1. Stack s = new Stack();2. System.out.println(s.isEmpty());3. s.push("9");4. s.push("8");5. System.out.println(s.size());6. s.push("7");7. System.out.println(s.pop());8. s.push("6");9. System.out.println(s.pop());10.System.out.println(s.size());11.System.out.println(s.isFull());12.System.out.println(s.isEmpty());
![Page 6: Stacks - Gorski CompScigorskicompsci.ca/ICS4U/4_Persistance/ppt6_StackCode.pdf · 2021. 1. 12. · ADT •Abstract Data Type •An standard object that is used for storing data; pop](https://reader036.vdocuments.mx/reader036/viewer/2022071514/6135905a0ad5d206764774fb/html5/thumbnails/6.jpg)
1. Stack s = new Stack();2. System.out.println(s.isEmpty());3. s.push("9");4. s.push("8");5. System.out.println(s.size());6. s.push("7");7. System.out.println(s.pop());8. s.push("6");9. System.out.println(s.pop());10.System.out.println(s.size());11.System.out.println(s.isFull());12.System.out.println(s.isEmpty());
S
![Page 7: Stacks - Gorski CompScigorskicompsci.ca/ICS4U/4_Persistance/ppt6_StackCode.pdf · 2021. 1. 12. · ADT •Abstract Data Type •An standard object that is used for storing data; pop](https://reader036.vdocuments.mx/reader036/viewer/2022071514/6135905a0ad5d206764774fb/html5/thumbnails/7.jpg)
1. Stack s = new Stack();2. System.out.println(s.isEmpty());3. s.push("9");4. s.push("8");5. System.out.println(s.size());6. s.push("7");7. System.out.println(s.pop());8. s.push("6");9. System.out.println(s.pop());10.System.out.println(s.size());11.System.out.println(s.isFull());12.System.out.println(s.isEmpty());
S
true
![Page 8: Stacks - Gorski CompScigorskicompsci.ca/ICS4U/4_Persistance/ppt6_StackCode.pdf · 2021. 1. 12. · ADT •Abstract Data Type •An standard object that is used for storing data; pop](https://reader036.vdocuments.mx/reader036/viewer/2022071514/6135905a0ad5d206764774fb/html5/thumbnails/8.jpg)
1. Stack s = new Stack();2. System.out.println(s.isEmpty());3. s.push("9");4. s.push("8");5. System.out.println(s.size());6. s.push("7");7. System.out.println(s.pop());8. s.push("6");9. System.out.println(s.pop());10.System.out.println(s.size());11.System.out.println(s.isFull());12.System.out.println(s.isEmpty());
S
9
true
![Page 9: Stacks - Gorski CompScigorskicompsci.ca/ICS4U/4_Persistance/ppt6_StackCode.pdf · 2021. 1. 12. · ADT •Abstract Data Type •An standard object that is used for storing data; pop](https://reader036.vdocuments.mx/reader036/viewer/2022071514/6135905a0ad5d206764774fb/html5/thumbnails/9.jpg)
1. Stack s = new Stack();2. System.out.println(s.isEmpty());3. s.push("9");4. s.push("8");5. System.out.println(s.size());6. s.push("7");7. System.out.println(s.pop());8. s.push("6");9. System.out.println(s.pop());10.System.out.println(s.size());11.System.out.println(s.isFull());12.System.out.println(s.isEmpty());
S
9
8
true
![Page 10: Stacks - Gorski CompScigorskicompsci.ca/ICS4U/4_Persistance/ppt6_StackCode.pdf · 2021. 1. 12. · ADT •Abstract Data Type •An standard object that is used for storing data; pop](https://reader036.vdocuments.mx/reader036/viewer/2022071514/6135905a0ad5d206764774fb/html5/thumbnails/10.jpg)
1. Stack s = new Stack();2. System.out.println(s.isEmpty());3. s.push("9");4. s.push("8");5. System.out.println(s.size());6. s.push("7");7. System.out.println(s.pop());8. s.push("6");9. System.out.println(s.pop());10.System.out.println(s.size());11.System.out.println(s.isFull());12.System.out.println(s.isEmpty());
S
9
8
true
2
![Page 11: Stacks - Gorski CompScigorskicompsci.ca/ICS4U/4_Persistance/ppt6_StackCode.pdf · 2021. 1. 12. · ADT •Abstract Data Type •An standard object that is used for storing data; pop](https://reader036.vdocuments.mx/reader036/viewer/2022071514/6135905a0ad5d206764774fb/html5/thumbnails/11.jpg)
1. Stack s = new Stack();2. System.out.println(s.isEmpty());3. s.push("9");4. s.push("8");5. System.out.println(s.size());6. s.push("7");7. System.out.println(s.pop());8. s.push("6");9. System.out.println(s.pop());10.System.out.println(s.size());11.System.out.println(s.isFull());12.System.out.println(s.isEmpty());
S
9
8
7
true
2
![Page 12: Stacks - Gorski CompScigorskicompsci.ca/ICS4U/4_Persistance/ppt6_StackCode.pdf · 2021. 1. 12. · ADT •Abstract Data Type •An standard object that is used for storing data; pop](https://reader036.vdocuments.mx/reader036/viewer/2022071514/6135905a0ad5d206764774fb/html5/thumbnails/12.jpg)
1. Stack s = new Stack();2. System.out.println(s.isEmpty());3. s.push("9");4. s.push("8");5. System.out.println(s.size());6. s.push("7");7. System.out.println(s.pop());8. s.push("6");9. System.out.println(s.pop());10.System.out.println(s.size());11.System.out.println(s.isFull());12.System.out.println(s.isEmpty());
S
9
8
true
2
7
![Page 13: Stacks - Gorski CompScigorskicompsci.ca/ICS4U/4_Persistance/ppt6_StackCode.pdf · 2021. 1. 12. · ADT •Abstract Data Type •An standard object that is used for storing data; pop](https://reader036.vdocuments.mx/reader036/viewer/2022071514/6135905a0ad5d206764774fb/html5/thumbnails/13.jpg)
1. Stack s = new Stack();2. System.out.println(s.isEmpty());3. s.push("9");4. s.push("8");5. System.out.println(s.size());6. s.push("7");7. System.out.println(s.pop());8. s.push("6");9. System.out.println(s.pop());10.System.out.println(s.size());11.System.out.println(s.isFull());12.System.out.println(s.isEmpty());
S
9
8
6
true
2
7
![Page 14: Stacks - Gorski CompScigorskicompsci.ca/ICS4U/4_Persistance/ppt6_StackCode.pdf · 2021. 1. 12. · ADT •Abstract Data Type •An standard object that is used for storing data; pop](https://reader036.vdocuments.mx/reader036/viewer/2022071514/6135905a0ad5d206764774fb/html5/thumbnails/14.jpg)
1. Stack s = new Stack();2. System.out.println(s.isEmpty());3. s.push("9");4. s.push("8");5. System.out.println(s.size());6. s.push("7");7. System.out.println(s.pop());8. s.push("6");9. System.out.println(s.pop());10.System.out.println(s.size());11.System.out.println(s.isFull());12.System.out.println(s.isEmpty());
S
9
8
true
2
7
6
![Page 15: Stacks - Gorski CompScigorskicompsci.ca/ICS4U/4_Persistance/ppt6_StackCode.pdf · 2021. 1. 12. · ADT •Abstract Data Type •An standard object that is used for storing data; pop](https://reader036.vdocuments.mx/reader036/viewer/2022071514/6135905a0ad5d206764774fb/html5/thumbnails/15.jpg)
1. Stack s = new Stack();2. System.out.println(s.isEmpty());3. s.push("9");4. s.push("8");5. System.out.println(s.size());6. s.push("7");7. System.out.println(s.pop());8. s.push("6");9. System.out.println(s.pop());10.System.out.println(s.size());11.System.out.println(s.isFull());12.System.out.println(s.isEmpty());
S
9
8
true
2
7
6
2
![Page 16: Stacks - Gorski CompScigorskicompsci.ca/ICS4U/4_Persistance/ppt6_StackCode.pdf · 2021. 1. 12. · ADT •Abstract Data Type •An standard object that is used for storing data; pop](https://reader036.vdocuments.mx/reader036/viewer/2022071514/6135905a0ad5d206764774fb/html5/thumbnails/16.jpg)
1. Stack s = new Stack();2. System.out.println(s.isEmpty());3. s.push("9");4. s.push("8");5. System.out.println(s.size());6. s.push("7");7. System.out.println(s.pop());8. s.push("6");9. System.out.println(s.pop());10.System.out.println(s.size());11.System.out.println(s.isFull());12.System.out.println(s.isEmpty());
S
9
8
true
2
7
6
2false
![Page 17: Stacks - Gorski CompScigorskicompsci.ca/ICS4U/4_Persistance/ppt6_StackCode.pdf · 2021. 1. 12. · ADT •Abstract Data Type •An standard object that is used for storing data; pop](https://reader036.vdocuments.mx/reader036/viewer/2022071514/6135905a0ad5d206764774fb/html5/thumbnails/17.jpg)
1. Stack s = new Stack();2. System.out.println(s.isEmpty());3. s.push("9");4. s.push("8");5. System.out.println(s.size());6. s.push("7");7. System.out.println(s.pop());8. s.push("6");9. System.out.println(s.pop());10.System.out.println(s.size());11.System.out.println(s.isFull());12.System.out.println(s.isEmpty());
S
9
8
true
2
7
6
2falsefalse
![Page 18: Stacks - Gorski CompScigorskicompsci.ca/ICS4U/4_Persistance/ppt6_StackCode.pdf · 2021. 1. 12. · ADT •Abstract Data Type •An standard object that is used for storing data; pop](https://reader036.vdocuments.mx/reader036/viewer/2022071514/6135905a0ad5d206764774fb/html5/thumbnails/18.jpg)
back
YouTube
![Page 19: Stacks - Gorski CompScigorskicompsci.ca/ICS4U/4_Persistance/ppt6_StackCode.pdf · 2021. 1. 12. · ADT •Abstract Data Type •An standard object that is used for storing data; pop](https://reader036.vdocuments.mx/reader036/viewer/2022071514/6135905a0ad5d206764774fb/html5/thumbnails/19.jpg)
back
YouTube
GorskiCompSci
![Page 20: Stacks - Gorski CompScigorskicompsci.ca/ICS4U/4_Persistance/ppt6_StackCode.pdf · 2021. 1. 12. · ADT •Abstract Data Type •An standard object that is used for storing data; pop](https://reader036.vdocuments.mx/reader036/viewer/2022071514/6135905a0ad5d206764774fb/html5/thumbnails/20.jpg)
back
YouTube
GorskiCompSci
![Page 21: Stacks - Gorski CompScigorskicompsci.ca/ICS4U/4_Persistance/ppt6_StackCode.pdf · 2021. 1. 12. · ADT •Abstract Data Type •An standard object that is used for storing data; pop](https://reader036.vdocuments.mx/reader036/viewer/2022071514/6135905a0ad5d206764774fb/html5/thumbnails/21.jpg)
back
YouTube
GorskiCompSci
Twitch
![Page 22: Stacks - Gorski CompScigorskicompsci.ca/ICS4U/4_Persistance/ppt6_StackCode.pdf · 2021. 1. 12. · ADT •Abstract Data Type •An standard object that is used for storing data; pop](https://reader036.vdocuments.mx/reader036/viewer/2022071514/6135905a0ad5d206764774fb/html5/thumbnails/22.jpg)
back
YouTube
GorskiCompSci
Twitch
BACK
![Page 23: Stacks - Gorski CompScigorskicompsci.ca/ICS4U/4_Persistance/ppt6_StackCode.pdf · 2021. 1. 12. · ADT •Abstract Data Type •An standard object that is used for storing data; pop](https://reader036.vdocuments.mx/reader036/viewer/2022071514/6135905a0ad5d206764774fb/html5/thumbnails/23.jpg)
back
YouTube
GorskiCompSci
![Page 24: Stacks - Gorski CompScigorskicompsci.ca/ICS4U/4_Persistance/ppt6_StackCode.pdf · 2021. 1. 12. · ADT •Abstract Data Type •An standard object that is used for storing data; pop](https://reader036.vdocuments.mx/reader036/viewer/2022071514/6135905a0ad5d206764774fb/html5/thumbnails/24.jpg)
back
YouTube
GorskiCompSci
GorskiCompSci
![Page 25: Stacks - Gorski CompScigorskicompsci.ca/ICS4U/4_Persistance/ppt6_StackCode.pdf · 2021. 1. 12. · ADT •Abstract Data Type •An standard object that is used for storing data; pop](https://reader036.vdocuments.mx/reader036/viewer/2022071514/6135905a0ad5d206764774fb/html5/thumbnails/25.jpg)
Object = data + methods
Array to hold stuffCount to track top
PeekPopPushSize
isFullisEmtpytoString
+Stack =
![Page 26: Stacks - Gorski CompScigorskicompsci.ca/ICS4U/4_Persistance/ppt6_StackCode.pdf · 2021. 1. 12. · ADT •Abstract Data Type •An standard object that is used for storing data; pop](https://reader036.vdocuments.mx/reader036/viewer/2022071514/6135905a0ad5d206764774fb/html5/thumbnails/26.jpg)
• We are grouping together the stack data AND its methods. • Our stack will be self-contained and programmers who
need a back or undo button can use it easier.
![Page 27: Stacks - Gorski CompScigorskicompsci.ca/ICS4U/4_Persistance/ppt6_StackCode.pdf · 2021. 1. 12. · ADT •Abstract Data Type •An standard object that is used for storing data; pop](https://reader036.vdocuments.mx/reader036/viewer/2022071514/6135905a0ad5d206764774fb/html5/thumbnails/27.jpg)
Remember that with
objects, our user has changed!
![Page 28: Stacks - Gorski CompScigorskicompsci.ca/ICS4U/4_Persistance/ppt6_StackCode.pdf · 2021. 1. 12. · ADT •Abstract Data Type •An standard object that is used for storing data; pop](https://reader036.vdocuments.mx/reader036/viewer/2022071514/6135905a0ad5d206764774fb/html5/thumbnails/28.jpg)
With Objects, your user
changes to other programmers.
![Page 29: Stacks - Gorski CompScigorskicompsci.ca/ICS4U/4_Persistance/ppt6_StackCode.pdf · 2021. 1. 12. · ADT •Abstract Data Type •An standard object that is used for storing data; pop](https://reader036.vdocuments.mx/reader036/viewer/2022071514/6135905a0ad5d206764774fb/html5/thumbnails/29.jpg)
• Stacks are also a good example of information hiding. • Who cares how push and pop are coded? • You just need to be aware of how they are called and
you can make a back button.
![Page 30: Stacks - Gorski CompScigorskicompsci.ca/ICS4U/4_Persistance/ppt6_StackCode.pdf · 2021. 1. 12. · ADT •Abstract Data Type •An standard object that is used for storing data; pop](https://reader036.vdocuments.mx/reader036/viewer/2022071514/6135905a0ad5d206764774fb/html5/thumbnails/30.jpg)
Object = data + methods
Array to hold stuffCount to track top
PeekPopPushSize
isFullisEmtpytoString
+Stack =
Private
Public
![Page 31: Stacks - Gorski CompScigorskicompsci.ca/ICS4U/4_Persistance/ppt6_StackCode.pdf · 2021. 1. 12. · ADT •Abstract Data Type •An standard object that is used for storing data; pop](https://reader036.vdocuments.mx/reader036/viewer/2022071514/6135905a0ad5d206764774fb/html5/thumbnails/31.jpg)
public class StackString {
private int count;private String data[] = new String [50];
public StackString () {count = 0;
}
public void push (String addMe) {if(!isFull()){data [count] = addMe;count++;
}}
public int size () {return count;
}
public boolean isFull () {return (count == 50);
}
public String pop () {if(count>0){
count--;return data [count];
}elsereturn "Stack empty";
}
public String peek () {return data [count--];
}
public boolean isEmpty () {return count == 0;
}
public void clear () {count = 0;
}
}
![Page 32: Stacks - Gorski CompScigorskicompsci.ca/ICS4U/4_Persistance/ppt6_StackCode.pdf · 2021. 1. 12. · ADT •Abstract Data Type •An standard object that is used for storing data; pop](https://reader036.vdocuments.mx/reader036/viewer/2022071514/6135905a0ad5d206764774fb/html5/thumbnails/32.jpg)
![Page 33: Stacks - Gorski CompScigorskicompsci.ca/ICS4U/4_Persistance/ppt6_StackCode.pdf · 2021. 1. 12. · ADT •Abstract Data Type •An standard object that is used for storing data; pop](https://reader036.vdocuments.mx/reader036/viewer/2022071514/6135905a0ad5d206764774fb/html5/thumbnails/33.jpg)
import java.util.Scanner;public class StackStringRunner {
public static void main(String [] args) {new StackStringRunner();
}
public StackStringRunner(){Scanner in = new Scanner(System.in);StackString s = new StackString();
for(int i=0; i<6; i++){System.out.print("Enter a word to push on the stack: ");s.push(in.nextLine());
}
System.out.println("Pop the top: "+s.pop());System.out.println("What is the size?: "+s.size());System.out.println("Is it empty?: "+s.isEmpty());System.out.println("The stack contains "+s.toString());
}}
![Page 34: Stacks - Gorski CompScigorskicompsci.ca/ICS4U/4_Persistance/ppt6_StackCode.pdf · 2021. 1. 12. · ADT •Abstract Data Type •An standard object that is used for storing data; pop](https://reader036.vdocuments.mx/reader036/viewer/2022071514/6135905a0ad5d206764774fb/html5/thumbnails/34.jpg)
![Page 35: Stacks - Gorski CompScigorskicompsci.ca/ICS4U/4_Persistance/ppt6_StackCode.pdf · 2021. 1. 12. · ADT •Abstract Data Type •An standard object that is used for storing data; pop](https://reader036.vdocuments.mx/reader036/viewer/2022071514/6135905a0ad5d206764774fb/html5/thumbnails/35.jpg)
Stack
• A common ADT, An object• Has a LIFO structure (Last in, first out)• Functions: size, isFull, isEmpty, push (add), pop (remove),
peek (look at the top)• All operations are O(1), but you are limited to stack functions.
The speed comes from the fact that you restricted the functionality a lot.
• For example: You can’t sort a stack: why? Because the order of the stack is the order you want. If you don’t want that order, then you don’t want a stack. Go use an array instead.
![Page 36: Stacks - Gorski CompScigorskicompsci.ca/ICS4U/4_Persistance/ppt6_StackCode.pdf · 2021. 1. 12. · ADT •Abstract Data Type •An standard object that is used for storing data; pop](https://reader036.vdocuments.mx/reader036/viewer/2022071514/6135905a0ad5d206764774fb/html5/thumbnails/36.jpg)
public class StackString {private int count;private String data[] = new String [50];
}
[0] [1] [2] [3] [4] [5] [6] [7] Etc.count
![Page 37: Stacks - Gorski CompScigorskicompsci.ca/ICS4U/4_Persistance/ppt6_StackCode.pdf · 2021. 1. 12. · ADT •Abstract Data Type •An standard object that is used for storing data; pop](https://reader036.vdocuments.mx/reader036/viewer/2022071514/6135905a0ad5d206764774fb/html5/thumbnails/37.jpg)
[0] [1] [2] [3] [4] [5] [6] [7] Etc.count
0
public class StackString {private int count;private String data[] = new String [50];
public StackString () {count = 0;
}
![Page 38: Stacks - Gorski CompScigorskicompsci.ca/ICS4U/4_Persistance/ppt6_StackCode.pdf · 2021. 1. 12. · ADT •Abstract Data Type •An standard object that is used for storing data; pop](https://reader036.vdocuments.mx/reader036/viewer/2022071514/6135905a0ad5d206764774fb/html5/thumbnails/38.jpg)
[0] [1] [2] [3] [4] [5] [6] [7] Etc.count
0
public int size () {return count;
}
public boolean isFull () {return (count == 50);
}
![Page 39: Stacks - Gorski CompScigorskicompsci.ca/ICS4U/4_Persistance/ppt6_StackCode.pdf · 2021. 1. 12. · ADT •Abstract Data Type •An standard object that is used for storing data; pop](https://reader036.vdocuments.mx/reader036/viewer/2022071514/6135905a0ad5d206764774fb/html5/thumbnails/39.jpg)
[0] [1] [2] [3] [4] [5] [6] [7] Etc.count
0
public String peek () {return data [count--];
}
public boolean isEmpty () {return count == 0;
}
public void clear () {count = 0;
}
![Page 40: Stacks - Gorski CompScigorskicompsci.ca/ICS4U/4_Persistance/ppt6_StackCode.pdf · 2021. 1. 12. · ADT •Abstract Data Type •An standard object that is used for storing data; pop](https://reader036.vdocuments.mx/reader036/viewer/2022071514/6135905a0ad5d206764774fb/html5/thumbnails/40.jpg)
[0] [1] [2] [3] [4] [5] [6] [7] Etc.count
0
public void push (String addMe) {if(!isFull()){data [count] = addMe;count++;
}}
![Page 41: Stacks - Gorski CompScigorskicompsci.ca/ICS4U/4_Persistance/ppt6_StackCode.pdf · 2021. 1. 12. · ADT •Abstract Data Type •An standard object that is used for storing data; pop](https://reader036.vdocuments.mx/reader036/viewer/2022071514/6135905a0ad5d206764774fb/html5/thumbnails/41.jpg)
[0] [1] [2] [3] [4] [5] [6] [7] Etc.count
0
public String pop () {if(count>0){count--;return data [count];
}elsereturn "Stack empty";
}
![Page 42: Stacks - Gorski CompScigorskicompsci.ca/ICS4U/4_Persistance/ppt6_StackCode.pdf · 2021. 1. 12. · ADT •Abstract Data Type •An standard object that is used for storing data; pop](https://reader036.vdocuments.mx/reader036/viewer/2022071514/6135905a0ad5d206764774fb/html5/thumbnails/42.jpg)
[0] [1] [2] [3] [4] [5] [6] [7] Etc.count
0
public String toString () {//this is not an official Stack method//it is useful to see what is in your StackString ans = "";for(int i=0; i<count; i++)ans+= data[i]+", ";
return ans;}