Συνδεδεμένη Λίστα (Linked List)

Σχετικά έγγραφα
4 ΔYNAMIKEΣ ΔOMEΣ ΔEΔOMENΩN

Συνδεδεμένη Λίστα ΣΛ null VK 23

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ. Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής

Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής T.E.I. ΘΕΣΣΑΛΟΝΙΚΗΣ

Δομές Δεδομένων & Ανάλυση Αλγορίθμων. 3ο Εξάμηνο. Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα.

Δομές Δεδομένων - Εργαστήριο 2. Λίστες

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ µε JAVA

Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής T.E.I. ΘΕΣΣΑΛΟΝΙΚΗΣ

4. Συνδεδεμένες Λίστες

Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές

Συλλογές, Στοίβες και Ουρές

Γραμμικές λίστες. Γκόγκος Χρήστος ΤΕΙ Ηπείρου

Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες

Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΔΕΝΤΡΑ (TREES) B C D E F G H I J K L M

Διάλεξη 21η: Απλά Συνδεδεμένες Λίστες

HY-252 Αντικειμενοστραφής Προγραμματισμός. Χειμερινό Εξάμηνο 2012 Διδάσκων: Χριστοφίδης Βασίλης. Ημερομηνία Παράδοσης: 16/11/2012

Αναδρομικοί Αλγόριθμοι

Στοίβες - Ουρές. Στοίβα (stack) Γιάννης Θεοδωρίδης, Νίκος Πελέκης, Άγγελος Πικράκης Τµήµα Πληροφορικής

Στοιχειώδεις Δομές Δεδομένων

ΠΛΗ111. Ανοιξη Μάθηµα 3 ο. Συνδεδεµένες Λίστες. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Λίστες παράλειψης (skip lists)

Συγκρίσιμα Αντικείμενα (comparable)

Διδάσκων: Παναγιώτης Ανδρέου

Δομές Δεδομένων & Αλγόριθμοι

Ουρά Προτεραιότητας (priority queue)

Διάλεξη 12: Δέντρα ΙΙ Δυαδικά Δέντρα

Κατ οίκον Εργασία 2 Σκελετοί Λύσεων

ΔυαδικάΔΕΝΔΡΑΑναζήτησης

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

Διάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις

Από τη UML στον Κώδικα. Μέρος Α

Κεφάλαιο 5 Συλλογές, Στοίβες και Ουρές

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Βασικές Ιδιότητες και Διάσχιση Κεφάλαιο 5 ( και ) Ε. Μαρκάκης Επίκουρος Καθηγητής

Βασικές Έννοιες Δοµών Δεδοµένων

Δομές Δεδομένων. Ενότητα 7: Άλλες παραλλαγές Συνδεδεμένων Λιστών-Παράσταση Αραιού Πολυωνύμου με Συνδεδεμένη Λίστα. Καθηγήτρια Μαρία Σατρατζέμη

Γράφημα. Συνδυαστικό αντικείμενο που αποτελείται από 2 σύνολα: Σύνολο κορυφών (vertex set) Σύνολο ακμών (edge set) 4 5 πλήθος κορυφών πλήθος ακμών

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών

ΠΛΗ111. Ανοιξη Μάθηµα 5 ο. Ουρά. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Οντοκεντρικός Προγραμματισμός

Διάλεξη 12: Λίστες Υλοποίηση & Εφαρμογές. Διδάσκων: Παναγιώτης Ανδρέου

Δομές Δεδομένων & Αλγόριθμοι

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Πίνακες Συµβόλων Κεφάλαιο 12 ( ) Ε. Μαρκάκης Επίκουρος Καθηγητής

Εργαστήριο 4: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Ταξινομημένη Λίστα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ 2 ΛΥΣΕΙΣ Γραμμικές Δομές Δεδομένων, Ταξινόμηση

public class ArrayStack implements Stack {

ΕΡΓΑΣΤΗΡΙΟ 5 ΣΗΜΕΙΩΣΕΙΣ

Δένδρα. Μαθηματικά (συνδυαστικά) αντικείμενα. Έχουν κεντρικό ρόλο στην επιστήμη των υπολογιστών :

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Υλοποίηση Δυαδικού Σωρού σε γλώσσα Java. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες

Δοµές Δεδοµένων. 16η Διάλεξη Κατακερµατισµός. Ε. Μαρκάκης

Κεφάλαιο 6 Ουρές Προτεραιότητας

Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές

Δομές Δεδομένων Ενότητα 4

Δομές Δεδομένων - Εργαστήριο 5. Ουρές Προτεραιότητας

Σύνοψη Προηγούμενου. Λίστες (Lists) Συνδεδεμένες Λίστες: Εισαγωγή (1/2) Συνδεδεμένες Λίστες. Ορέστης Τελέλης

Alternative to Balanced Trees, Comms of the ACM, 33(6), June 1990,

Oι βασικές πράξεις (λειτουργίες) που ορίζονται για τον τύπο στοίβα αναφέρονται παρακάτω:

Δοµές Δεδοµένων. 11η Διάλεξη Ταξινόµηση Quicksort και Ιδιότητες Δέντρων. Ε. Μαρκάκης

Φροντιστήριο 4 Σκελετοί Λύσεων

Γράφοι. Ορολογία. Ορισµός: G = (V, E) όπου. Ορολογία (συνέχεια) γράφος ή γράφηµα (graph) V:ένα σύνολο E:µια διµελής σχέση στο V

Οι λίστες, χάνοντας τα πλεονεκτήματα των πινάκων, λύνουν προβλήματα που παρουσιάζουν οι πίνακες

Δομές Αναζήτησης. κλειδί από ολικά διατεταγμένο σύνολο. Θέλουμε να υποστηρίξουμε δύο βασικές λειτουργίες: Εισαγωγή ενός νέου στοιχείου

Σημειώσεις έκτης και έβδομης εβδομάδας

ΠΛΗ111. Ανοιξη Μάθηµα 7 ο. έντρο. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Δομές Δεδομένων. Ενότητα 6: Εφαρμογή Συνδεδεμένων Λιστών: Αλφαβητικό ευρετήριο κειμένου- Υλοποίηση ΑΤΔ Στοίβα και Ουρά με δείκτες

ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δυναμική Δέσμευση Μνήμης και Δομές Δεδομένων (Φροντιστήριο)

Διάλεξη 15: Αναδρομή (Recursion) Διδάσκων: Παναγιώτης Ανδρέου

Απλές Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες απλές Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλή

Διάλεξη 11: Φροντιστήριο για Στοίβες. Διδάσκων: Παναγιώτης Ανδρέου. ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ.

ΠΛΗ111. Ανοιξη Μάθηµα 4 ο. Στοίβα. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Διασυνδεδεμένες Δομές. Λίστες. Προγραμματισμός II 1

Δομές Δεδομένων (Data Structures)

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Στοιχειώδεις Δοµές Δεδοµένων Λίστες Κεφάλαιο 3 (3.3, 3.4, 3.7) Ε. Μαρκάκης Επικ. Καθηγητής

H κλάση ArrayList. Γιώργος Θάνος. Γραφείο Γ. Γκλαβάνη 37. Αντικει ενοστραφής Προγρα. ος όροφος

Προγραμματισμός Ι. Δομές Δεδομένων. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Κεφάλαιο 10 Ψηφιακά Λεξικά

Δοµές Δεδοµένων. 14η Διάλεξη Δέντρα Δυαδικής Αναζήτησης. Ε. Μαρκάκης

Πανεπιστηµιο Πειραιως Σχολη Τεχνολογιων Πληροφορικης και Επικοινωνιων Τµηµα Ψηφιακων Συστηµατων οµές εδοµένων η Εργασία

Δοµές Δεδοµένων. 9η Διάλεξη Ταξινόµηση - Στοιχειώδεις µέθοδοι. Ε. Μαρκάκης

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Στοιχειώδεις Δοµές Δεδοµένων Λίστες Κεφάλαιο 3 (3.3, 3.4, 3.7) Ε. Μαρκάκης Επικ. Καθηγητής

Δομές Δεδομένων. Ενότητα 4: Ο ΑΤΔ Λίστα & Υλοποίηση Λίστας με σειριακή αποθήκευση- Ο ΑΤΔ Συνδεδεμένη Λίστα- Υλοποίηση ΑΤΔ Συνδεδεμένη Λίστα με πίνακα

Δοµές Δεδοµένων. 4η Διάλεξη Στοιχειώδεις Δοµές Δεδοµένων: Πίνακες και Λίστες. Ε. Μαρκάκης

Διάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις

υαδικά δέντρα αναζήτησης

Δοµές Δεδοµένων. 7η Διάλεξη Αφηρηµένοι Τύποι Δεδοµένων. Ε. Μαρκάκης

lab13grades Άσκηση 2 -Σωστά απελευθερώνετε ολόκληρη τη λίστα και την κεφαλή

Διάλεξη 14: Δομές Δεδομένων ΙΙI (Λίστες και Παραδείγματα)

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής

Φροντιςτήριο. Linked-List

Δοµές Δεδοµένων. 5η Διάλεξη Λίστες και αρχές ανάλυσης αλγορίθµων. Ε. Μαρκάκης

public class ArrayQueue implements Queue {

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5

Λίστες (Lists) Ορέστης Τελέλης. Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς

Διάλεξη 08: ΛίστεςΙΙ Κυκλικές Λίστες. Διδάσκων: Παναγιώτης Ανδρέου

Δυαδικά Δένδρα Αναζήτησης, Δένδρα AVL

Transcript:

Δομές Δεδομένων & Ανάλυση Αλγορίθμων 3ο Εξάμηνο Συνδεδεμένες Λίστες (inked ist) http://aetos.it.teithe.gr/~demos/teaching_gr.html Δημοσθένης Σταμάτης Τμήμα Μηχανικών Πληροφορικής A.T.E.I. ΘΕΣΣΑΛΟΝΙΚΗΣ Συνδεδεμένη Λίστα (inked ist) Λίστα (ist) είναι ένα διατεταγμένο σύνολο από 0 ή περισσότερα στοιχεία τα οποία, κατά κανόνα, είναι όλα του ίδιου τύπου: a1, a2,..., an Σε μία Συνδεδεμένη Λίστα (inked ist) τα παραπάνω στοιχεία είναι τοποθετημένα σε κόμβους οι οποίοι είναι συνδεδεμένοι μεταξύ τους όπως φαίνεται στο παρακάτω σχήμα: a1 a2... an null Η συνδεδεμένη λίστα είναι δυναμική δομή δεδομένων. Ο αριθμός των κόμβων της μεταβάλλεται στη διάρκεια της εκτέλεσης του προγράμματος, καθώς κόμβοι μπορούν να εισάγονται και να διαγράφονται 1

Τρόποι Αναπαράστασης Συνδεδεμένης Λίστας Απλά Συνδεδεμένη λίστα με πρόσβαση στην αρχή firstnode lastnode Απλά Συνδεδεμένη λίστα με πρόσβαση στην αρχή και στο τέλος firstnode lastnode null Διπλά Συνδεδεμένη λίστα με πρόσβαση στην αρχή και στο τέλος Βασικές λειτουργίες Συνδεδεμένης Λίστας Οι πιο βασικές λειτουργίες που απαιτούνται για το χειρισμό μιας συνδεδεμένης λίστας ανήκουν σε μία από τις παρακάτω τρεις κατηγορίες: Επίσκεψη κάποιου κόμβου της συνδεδεμένης λίστας Προσθήκη ενός κόμβου στη συνδεδεμένη λίστα Διαγραφή ενός κόμβου από τη συνδεδεμένη λίστα Οποιαδήποτε άλλη λειτουργία μπορεί να οριστεί σαν συνδυασμός των παραπάνω τριών: 2

Επίσκεψη Κόμβου σε Συνδεδεμένη Λίστα ΒΗΜΑ 1: Τοποθετούμε ένα βοηθητικό δείκτη ο οποίος δείχνει στην αρχή της λίστας: urrent = ; urrent ΒΗΜΑ 2: Στη συνέχεια μετακινούμε τον δείκτη urrent στον επόμενο κόμβο, όσες φορές απαιτείται για να τον τοποθετήσουμε στην επιθυμητή θέση: urrent = urrent.next; ή ισοδύναμα urrent = urrent.getnext( ); urrent Εισαγωγή Κόμβου σε Συνδεδεμένη Λίστα ΒΗΜΑ 1: Δημιουργούμε τον καινούργιο κόμβο: Β = new Node(T, null) B ΒΗΜΑ 2: Τον συνδέουμε με τον επόμενο : Β.next =. next; ή ισοδύναμα B.setNext(.getNext( )); B ΒΗΜΑ 3: Τέλος κάνουμε επόμενο του κόμβου τον κόμβο B.next = B; ή ισοδύναμα.setnext(b); B 3

Διαγραφή Κόμβου από Συνδεδεμένη Λίστα Πριν τη διαγραφή του κόμβου που βρίσκεται μετά τον Διαγράφουμε τον επόμενο κόμβο του παρακάμπτοντάς τον ως εξής:.next =.next.next; ή ισοδύναμα.setnext(.getnext( ).getnext( )) Μετά τη διαγραφή του κόμβου class Node //Ορισμός κόμβου μιας απλά συνδεδεμένης λίστας (linked list) Object item; Node next; public Node( ) this(null,null); public Node(Object it, Node n) item = it; next = n; public void setitem(object newitem) item = newitem; public void setnext(node newnext) next = newnext; public Object getitem( ) return(item); public Node getnext( ) return(next); 4

public class inkedist //Υλοποίηση μιάς απλά συνδεδεμένης λίστας (linked list) private Node firstnode, lastnode; public inkedist( ) firstnode = lastnode = null; public Node getfirst( ) return firstnode; public Node getast( ) return lastnode; public boolean isempty( ) return(firstnode == null); public void insertfirst(object newitem) firstnode = lastnode = new Node(newItem, null); firstnode = new Node(newItem, firstnode); public void insertast(object newitem) firstnode = lastnode = new Node(newItem, null); lastnode = lastnode.next = new Node(newItem, null); 5

public Object removefirst( ) throws istemptyexception throw new istemptyexception("empty ist!!!"); Object removeitem = firstnode.item; if (firstnode == lastnode ) /* Αν χρησιμοποιήσουμε equals??? */ firstnode = lastnode = null; firstnode = firstnode.next; return removeitem; public Object removeast( ) throws istemptyexception throw new istemptyexception("empty ist!!!"); Object removeitem = lastnode.item; if (firstnode == lastnode) firstnode = lastnode = null; Node current = firstnode; while (current.next!= lastnode) current = current.next; lastnode = current; current.next = null; return removeitem; 6

public void printist( ) System.out.println("Empty ist"); Node current = firstnode; while (current!= null) System.out.print(current.item.toString( ) + " "); current = current.next; System.out.println("\n"); 7