class Stack Element private int value private Stack

  • Slides: 29
Download presentation

class Stack. Element { private int value; private Stack. Element next = null; Το

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; Το πρώτο

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 μεταβλητή για να διατρέξει τα στοιχεία της

Μέθοδος 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 main(String[] args){ Stack s = new Stack();

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){

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

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

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 main(String[] args){ Person. Stack stack = new

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 αναφορά