class Stack Element private int value private Stack















![class Stack. Example { public static void main(String[] args){ Stack s = new Stack(); class Stack. Example { public static void main(String[] args){ Stack s = new Stack();](https://slidetodoc.com/presentation_image_h2/7444fba8ddedef186e9551b72c04857d/image-16.jpg)




![class Stack. Example { public static void main(String[] args){ Person. Stack stack = new class Stack. Example { public static void main(String[] args){ Person. Stack stack = new](https://slidetodoc.com/presentation_image_h2/7444fba8ddedef186e9551b72c04857d/image-21.jpg)








- Slides: 29













class Stack. Element { private int value; private Stack. Element next = null; Το επόμενο στοιχείο public Stack. Element(int value){ this. value = value; } public int get. Value(){ return value; } Επιστρέφει αντικείμενο public Stack. Element get. Next(){ return next; } public void set. Next(Stack. Element element){ next = element; } }

class Stack { private Stack. Element head; private int size = 0; Το πρώτο στοιχείο της στοίβας μας φτάνει για τα βρούμε όλα public int pop(){ if (size == 0){ // head == null System. out. println("Pop from empty stack"); System. exit(-1); } int value = head. get. Value(); Σταματάει την εκτέλεση του head = head. get. Next(); προγράμματος size --; return value; } public void push(int value){ Stack. Element element = new Stack. Element(value); element. set. Next(head); head = element; Τα αντικείμενα τύπου size ++; Stack. Element δημιουργούνται } μέσα στην Stack. }

Μέθοδος to. String() Χρειαζόμαστε μία Stack. Element μεταβλητή για να διατρέξει τα στοιχεία της στοίβας public String to. String(){ String return. String = ""; Int. Stack. Element e = head; for (int i = 0; i < size; i ++){ return. String = return. String + e. get. Value() + " "; e = e. get. Next(); } return. String; } public String to. String(){ Εναλλακτική υλοποίηση String return. String = ""; for (Int. Stack. Element e = head; e != null; for-loop που δεν διατρέχει ακεραίους e = e. get. Next()){ return. String = return. String + e. get. Value() + " "; } return. String; }
![class Stack Example public static void mainString args Stack s new Stack class Stack. Example { public static void main(String[] args){ Stack s = new Stack();](https://slidetodoc.com/presentation_image_h2/7444fba8ddedef186e9551b72c04857d/image-16.jpg)
class Stack. Example { public static void main(String[] args){ Stack s = new Stack(); s. push(3); s. push(2); s. push(1); System. out. println(s. pop()); } }


class Person { private String name; private int number; public Person(String name, int num){ this. name = name; this. number = num; } public String to. String(){ return name+": "+number; } }

class Person. Stack. Element { private Person value; private Person. Stack. Element next; public Person. Stack. Element(Person val){ value = val; O constructor παίρνει σαν όρισμα το } αντικείμενο που έχει ήδη δημιουργηθεί public void set. Next(Person. Stack. Element element){ next = element; } public Person. Stack. Element get. Next(){ return next; } public Person get. Value(){ return value; } } Το αντικείμενο το χειριζόμαστε σαν μια οποιαδήποτε μεταβλητή

class Stack { private Person. Stack. Element head; H pop πλέον επιστρέφει μεταβλητή private int size = 0; τύπου Person public Person pop(){ if (size == 0){ // head == null System. out. println("Pop from empty stack"); return null; } int value = head. get. Value(); Επιστρέφουμε null για να head = head. get. Next(); σηματοδοτήσουμε ότι έγινε λάθος size --; (όχι απαραίτητα ο καλύτερος return value; τρόπος να το κάνουμε αυτό) } public void push(Person value){ Stack. Element element = new Stack. Element(value); element. set. Next(head); head = element; size ++; } }
![class Stack Example public static void mainString args Person Stack stack new class Stack. Example { public static void main(String[] args){ Person. Stack stack = new](https://slidetodoc.com/presentation_image_h2/7444fba8ddedef186e9551b72c04857d/image-21.jpg)
class Stack. Example { public static void main(String[] args){ Person. Stack stack = new Person. Stack(); Person alice = new Person("Alice", 1); stack. push(alice); Person bob = new Person("Bob", 2); stack. push(bob); Person charlie = new Person("Charlie", 3); stack. push(charlie); System. out. println(stack. pop()); } } Προσοχή! Αν καλέσουμε άλλη μια φορά την pop θα πάρουμε runtime error γιατί προσπαθούμε να προσπελάσουμε null αναφορά







