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

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

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

Transcript

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

2 Σύνοψη Προηγούµενου Στοίβες (Stacks) «Last-In First-Out» (LIFO): Εισαγωγή (push) στην κορυφή της στοίβας O(1) χρόνος. Εξαγωγή (pop) από την κορυφή της στοίβας O(1) χρόνος. Ουρές (Queues) «First-In First-Out» (FIFO): Εισαγωγή (insert / enqueue) στο τέλος της ουράς O(1) χρόνος. Εξαγωγή (remove / dequeue) από την αρχή της ουράς O(1) χρόνος. Ουρές Προτεραιότητας (Priority Queues). Εισαγωγή (insert / enqueue) στη «σωστή ϑέση» στην ουρά O(n) χρόνος. Εξαγωγή (remove / dequeue) από το ένα άκρο της ουράς O(1) χρόνος. Ο. Τελέλης Πανεπιστήµιο Πειραιώς οµές εδοµένων 2 / 50

3 Ασκηση 2 Υλοποίηση Στοίβας µε ύο Ουρές ιαθέτουµε δύο αντικείµενα δοµής ουράς, Q1, Q2. Υποστηρίζουν τις συνήθεις λειτουργίες ουρών: insert, remove, peekfront, isempty, isfull, size Ζητούνται υλοποιήσεις των λειτουργιών push και pop «εικονικής» στοίβας: µόνο µε χρήση των δύο ουρών Q1, Q2, σαν αποθηκευτικό µέσο, µόνο µε χρήση των λειτουργιών ουράς (επί των Q1, Q2). Να δοθούν δύο υλοποιήσεις: 1. Στην πρώτη, η λειτουργία pop να είναι χρόνου O(1). 2. Στη δεύτερη, η λειτουργία push να είναι χρόνου O(1). Ο. Τελέλης Πανεπιστήµιο Πειραιώς οµές εδοµένων 3 / 50

4 Ασκηση 2 Υλοποίηση Στοίβας µε ύο Ουρές class Stack { private Queue Q1; private Queue Q2; public Stack(int maxsize) { Q1 = new Queue(maxSize); Q2 = new Queue(maxSize); public void push(int item) { /* implementation??? */ public int pop() { /* implementation??? */ Ο. Τελέλης Πανεπιστήµιο Πειραιώς οµές εδοµένων 4 / 50

5 Ασκηση 2 pop σε χρόνο O(1) public int pop() { return(q1.remove()); public void push(int item) { Q2.insert(item); while(!q1.isempty() ) Q2.insert( Q1.remove() ); // Insert in Q2 // "Empty" Q1 into Q2 Queue tempq = Q1; Q1 = Q2; Q2 = tempq; // Exchange the queues names Πολυπλοκότητα της push: O(n). Ο. Τελέλης Πανεπιστήµιο Πειραιώς οµές εδοµένων 5 / 50

6 Συνδεδεµένες Λίστες Linked Lists Ο. Τελέλης Πανεπιστήµιο Πειραιώς οµές εδοµένων 6 / 50

7 Συνδεδεµένες Λίστες: Εισαγωγή (1/2) Είδαµε δοµές υλοποιηµένες µε στατική δέσµευση της µνήµης: Πίνακες, Στοίβες, Ουρές. Στατική δέσµευση πινακα προσφέρει τυχαία προσπέλαση σε O(1) χρόνο. Οµως: Η τυχαία προσπέλαση απουσιάζει εξ ορισµού, από στοίβες και ουρές. Η στατική δέσµευση έχει µειονεκτήµατα (που έχουµε ξαναδεί): Πρέπει να γνωρίζουµε άνω ϕράγµα πλήθους των δεδοµένων µας. Μπορεί σηµαντικό ποσό δεσµευµένης µνήµης να µένει αχρησιµοποίητο. Στο εξής: δοµές δεδοµένων µε δυναµική διαχείριση µνήµης. Και ϑα µελετήσουµε δοµές που ϐελτιστοποιούν το χρόνο της αναζήτησης. Ο. Τελέλης Πανεπιστήµιο Πειραιώς οµές εδοµένων 7 / 50

8 Συνδεδεµένες λίστες: Εισαγωγή (2/2) Μία συνδεδεµένη λίστα αποτελείται από µία συλλογή δυναµικά δεσµευµένων κόµβων µε συνδέσεις µεταξύ τους. Ευµετάβλητη δοµή δεδοµένων που µπορεί να χρησιµοποιηθεί σε πολλές περιπτώσεις αποθήκευσης δεδοµένων. Επιδέχεται διαφορετικές υλοποιήσεις που εξυπηρετούν διαφορετικές εκδοχές ϐασικών πράξεων. Μπορεί να αντικαταστήσει έναν πίνακα ως ϐάση για άλλες δοµές αποθήκευσης, όπως στοίβες και ουρές. Εκτός αν απαιτείται τυχαία προσπέλαση σε µεµονωµένα στοιχεία µε τη χρήση δείκτη, π.χ., A[2]. Ο. Τελέλης Πανεπιστήµιο Πειραιώς οµές εδοµένων 8 / 50

9 Απλά Συνδεδεµένη Λίστα Απλά Συνδεδεµένη Λίστα: Σύνολο κόµβων που αποθηκεύουν αντικείµενα (δεδοµένα). Κάθε κόµβος στη λίστα «δείχνει» τον επόµενο, εκτός από τον τελευταίο. Κόµβος = αντικείµενο + αναφορά στον επόµενο κόµβο. Ο. Τελέλης Πανεπιστήµιο Πειραιώς οµές εδοµένων 9 / 50

10 Βασικές Πράξεις Λίστας Εισαγωγή ιαφορετικές Εκδοχές: 1. στην αρχή της λίστας, στο τέλος της λίστας, χρόνου O(1) 2. µετά από κόµβο µε δεδοµένο κλειδί, χρόνου O(n) ιαγραφή ιαφορετικές Εκδοχές: 1. πρώτου / τελευταίου κόµβου της λίστας, χρόνου O(1) 2. ενός κόµβου µε δεδοµένο κλειδί, χρόνου O(n) Αναζήτηση κόµβου µε δεδοµένο κλειδί. χρόνου O(n) Ο. Τελέλης Πανεπιστήµιο Πειραιώς οµές εδοµένων 10 / 50

11 Κόµβος Λίστας class Node { public int idata; public Object ddata; public Node next; // data item (key) // data item public Node(int id, Object dd) { idata = id; ddata = dd; public void display() { System.out.println("{ " + idata + ", " + ddata.tostring () + " "); // End of class Node Σηµείωση: Αυτή η κλάση είναι αυτο-αναφερόµενη (self-referencing). Ο. Τελέλης Πανεπιστήµιο Πειραιώς οµές εδοµένων 11 / 50

12 Εισαγωγή σε Απλά Συνδεδεµένη Λίστα Πρέπει να οριστεί η ϑέση που ϑα γίνει η εισαγωγή. Εστω current η ϑέση µετά την οποία ϑα γίνει η εισαγωγή. tmp.next = current.next; current.next = tmp; // next of node x is node b // next of node a is node x Ο. Τελέλης Πανεπιστήµιο Πειραιώς οµές εδοµένων 12 / 50

13 ιαγραφή από Απλά Συνδεδεµένη Λίστα (1/2) Βασική Περίπτωση ιαγραφή του στοιχείου x από τη λίστα. Εστω current η ϑέση του κόµβου πριν το x. Ο δείκτης προς τον επόµενο του current ϑα πρέπει να παρακάµψει τον x. current.next = (current.next).next; Ο. Τελέλης Πανεπιστήµιο Πειραιώς οµές εδοµένων 13 / 50

14 Βασική Υλοποίηση Απλά Συνδεδεµένη Λίστα Εισαγωγή: στην αρχή της λίστας, µετά από κόµβο µε δεδοµένο κλειδί. ιαγραφή: από την αρχή της λίστας, κόµβου µε δεδοµένο κλειδί. Αναζήτηση: κόµβου µε δεδοµένο κλειδί. Ο. Τελέλης Πανεπιστήµιο Πειραιώς οµές εδοµένων 14 / 50

15 Υλοποίηση (1/4): Κλάση LinkedList class LinkedList { private Node first; // ref to first node on list // public LinkedList() { first = null; // empty list // public boolean isempty() { return (first == null); // Returns true if empty. Ο. Τελέλης Πανεπιστήµιο Πειραιώς οµές εδοµένων 15 / 50

16 Υλοποίηση: Εισαγωγή στην + ιαγραφή από την Αρχή public void insertfirst(int id, Object dd) { Node newnode = new Node(id, dd); newnode.next = first; first = newnode; // make new node // newnode --> old first // first --> newnode public Object deletefirst() { // delete first item if (isempty()) return(null); Node tmp = first; first = first.next; return(tmp.ddata); // nothing to delete // save reference to "old" first // "delete" it: first-->old next // return data of deleted node Ο. Τελέλης Πανεπιστήµιο Πειραιώς οµές εδοµένων 16 / 50

17 Υλοποίηση (2/5): Κλάση LinkedList // public void displaylist() { System.out.print("List (first-->last): "); Node current = first; // start at beginning of list while(current!= null) { // until end of list, current.display(); // print data current = current.next; // move to next link System.out.println(""); // Ο. Τελέλης Πανεπιστήµιο Πειραιώς οµές εδοµένων 17 / 50

18 Υλοποίηση: Αναζήτηση Κόµβου private Node findnode(int key) { // returns node with given key if (isempty()) return(null); // nothing to find Node current = first; // start at first while(current.idata!= key) { // while no match, if(current.next == null) // if end of list, return null; // didn t find it else // not end of list, current = current.next; // go to next node return(current); // found it Σχόλιο: Αυτή η µέθοδος είναι private διότι: επιστρέφει αντικείµενο τύπου Node «εσωτερικό» της λίστας, δε ϑέλουµε ο χρήστης να µπορεί να «πειράζει» τέτοια αντικείµενα, εξυπηρετεί άλλες (public) µεθόδους: find, insertafter, delete Ο. Τελέλης Πανεπιστήµιο Πειραιώς οµές εδοµένων 18 / 50

19 Υλοποίηση: Αναζήτηση ( εδοµένων) public Object find(int key) { // returns data for a given key Node somenode = findnode(key); if (somenode == null) return(null); else return(somenode.ddata); Σχόλιο: Αυτή η µέθοδος είναι public: διαθέσιµη στον τελικό χρήστη, για την ανάκτηση των δεδοµένων του, χρησιµοποιεί (εσωτερικά) την findnode για ανάκτηση του σχετικού κόµβου. Ο. Τελέλης Πανεπιστήµιο Πειραιώς οµές εδοµένων 19 / 50

20 Υλοποίηση: «Εισαγωγή µετά από» public boolean insertafter(int key, int id, Object dd) { Node previous = findnode(key); if (previous == null) return(false); else { // find node // no previous found // no insertion // insert after Node newnode = new Node(id, dd); // make new node newnode.next = previous.next; previous.next = newnode; return(true); // success Ο. Τελέλης Πανεπιστήµιο Πειραιώς οµές εδοµένων 20 / 50

21 Υλοποίηση: ιαγραφή µε Κλειδί public Object delete(int key) { if (isempty()) return(null); Node current = first; Node previous = first; // current node // previous of current while(current.idata!= key) { // search for node if(current.next == null) // not found: end of list return(null); else { // go to next node previous = current; current = current.next; // found node with key if(current == first) first = first.next; // delete first else previous.next = current.next; // delete current return(current.ddata); // return deleted node s data Ο. Τελέλης Πανεπιστήµιο Πειραιώς οµές εδοµένων 21 / 50

22 class LinkedListApp { public static void main(string[] args) { LinkedList alist = new LinkedList(); alist.insertfirst(22, 2.99); alist.insertfirst(44, 4.99); alist.insertfirst(66, 6.99); alist.insertfirst(88, 8.99); alist.displaylist(); Node f = alist.find(44); if (f!= null) System.out.println("Found Node with key " + f.idata "!!! "); else System.out.println("Can t find node."); Node d = alist.delete(66); if (d!= null) System.out.println("Deleted node with key " + d.idata); else System.out.println("Can t delete node."); alist.displaylist(); Ο. Τελέλης Πανεπιστήµιο Πειραιώς οµές εδοµένων 22 / 50

23 Παράδειγµα: Υλοποίηση Στοίβας class Stack { private LinkedList list; public Stack() { list = new LinkedList(); public isempty() { return(list.isempty()); public void push(object dd) { list.insertfirst(0, dd); public Object pop() { return(list.deletefirst()); Ο. Τελέλης Πανεπιστήµιο Πειραιώς οµές εδοµένων 23 / 50

24 Παράδειγµα: Υλοποίηση Ουράς µε Λίστα Η ουρά χρειάζεται εισαγωγή στο ένα άκρο, αποµάκρυνση από το άλλο. Απαιτείται η συντήρηση επιπλέον αναφοράς στο τέλος της λίστας: class List { private Node first; private Node last; // Υλοποίηση των επιπλέον µεθόδων: public void insertlast(int id, Object dd); Προσοχή στην ενηµέρωση και της αναφοράς first, αν χρειάζεται. public Object deletelast(); Προσοχή στην ενηµέρωση και της αναφοράς first, αν χρειάζεται. Ο. Τελέλης Πανεπιστήµιο Πειραιώς οµές εδοµένων 24 / 50

25 Παράδειγµα: Υλοποίηση Ουράς class Queue { private LinkedList list; public Queue() { list = new LinkedList(); public isempty() { return(list.isempty()); public void insert(int id, Object dd) { list.insertlast(id, dd); public Object remove() { return(list.deletelast()); Ο. Τελέλης Πανεπιστήµιο Πειραιώς οµές εδοµένων 25 / 50

26 Απλοποίηση Υλοποίησης ιαχείριση Ειδικών Περιπτώσεων Προβλήµατα µε τη ϐασική περιγραφή λειτουργιών απλά συνδεδεµένης λίστας. ιαγραφή: Κάθε ϕορά που διαγράφεται ένας κόµβος, πρέπει να ϐρίσκουµε τον προηγούµενο του. Ειδική περίπτωση: διαγραφή πρώτου κόµβου. Εισαγωγή: Ο κόµβος που εισάγουµε πρέπει να ακολουθεί κάποιον κόµβο. Ειδική περίπτωση: εκτός κι αν είναι ο πρώτος. Μπορούµε να απλοποιήσουµε την υλοποίηση (τουλάχιστον εννοιολογικά) εξασφαλίζοντας τη διατήρηση µιας αναλλοίωτης ιδιότητας: Σε µια απλά συνδεδεµένη λίστα, κάθε κόµβος έχει έναν προηγούµενο. Ο. Τελέλης Πανεπιστήµιο Πειραιώς οµές εδοµένων 26 / 50

27 Κόµβος κεφαλής (Head Node) Κόµβος κεφαλή (Head) της λίστας: επιπλέον κόµβος που δεν διατηρεί δεδοµένα. εξυπηρετεί στο να ικανοποιηθεί η απαίτηση κάθε κόµβος να έχει έναν προηγούµενο κόµβο στη λίστα. Με χρήση του κόµβου κεφαλής µπορούµε να διαχειριστούµε εύκολα τις ειδικές περιπτώσεις εισαγωγής και διαγραφής στην αρχή της λίστας. Ο. Τελέλης Πανεπιστήµιο Πειραιώς οµές εδοµένων 27 / 50

28 Κόµβος κεφαλής (Head Node) head.ddata = null; Χρήση κόµβου κεφαλής για συνδεδεµένη λίστα. head.next = null; Κενή λίστα όταν χρησιµοποιούµε κόµβο κεφαλής. Ο. Τελέλης Πανεπιστήµιο Πειραιώς οµές εδοµένων 28 / 50

29 Πλεονεκτήµατα Χρήσης Κόµβου Κεφαλής Ενοποίηση των insertfirst και insertafter: Υλοποιούµε µία private µέθοδο, myinsertafter(node node, int id, Object dd). insertafter(int key, int id, Object dd): node=findnode(key); myinsertafter(node, id, dd); insertfirst(int id, Object dd): myinsertafter(head, id, dd); Στη µέθοδο delete(int key) δε χρειάζονται: έλεγχος isempty() στην αρχή, ειδικός χειρισµός του πρώτου κόµβου (το if -statement στο τέλος). Ο. Τελέλης Πανεπιστήµιο Πειραιώς οµές εδοµένων 29 / 50

30 ιαγραφή / Εισαγωγή στο Τέλος Με την έως τώρα υλοποίηση απαιτούν O(n) χρόνο. ιάσχιση όλης της λίστας µέχρι εύρεσης του τελευταίου κόµβου. ιαγραφή του τελευταίου κόµβου / Εισαγωγή µετά από τον τελευταίο κόµβο. Μπορεί να γίνει σε O(1) χρόνο, αν συντηρούµε αναφορά last, επιπλέον της αναφοράς first. Αν έχουµε άδεια λίστα µε κόµβο κεφαλή, τότε last=null. Η Εισαγωγή µετά από τον τελευταίο κόµβο ελέγχει αν last==null και εισάγει µετά από την κεφαλή, αν αυτό είναι αληθές. Η ιαγραφή του τελευταίου κόµβου ελέγχει αν last==null και επιστρέφει null, αν αυτό είναι αληθές. Ο. Τελέλης Πανεπιστήµιο Πειραιώς οµές εδοµένων 30 / 50

31 ιπλά Συνδεδεµένες Λίστες Doubly Linked Lists Ο. Τελέλης Πανεπιστήµιο Πειραιώς οµές εδοµένων 31 / 50

32 ιπλά Συνδεδεµένες Λίστες Απλά Συνδεδεµένη Λίστα: υνατότητα αποδοτικής διάσχισης της λίστας προς µία κατεύθυνση. εν υπάρχει τρόπος να γνωρίζουµε τον προηγούµενο δεδοµένου κόµβου. ιπλά Συνδεδεµένη Λίστα: Κάθε κόµβος έχει επόµενο (next) και προηγούµενο (previous). υνατότητα διάσχισης διπλής κατεύθυνσης (π.χ., εκτύπωση σε ανάποδη σειρά), εφόσον διατηρούµε και µια αναφορά last. Ο. Τελέλης Πανεπιστήµιο Πειραιώς οµές εδοµένων 32 / 50

33 ιπλά Συνδ/νες Λίστες: Πλεονεκτήµατα Υλοποίηση Εισαγωγής και ιαγραφής ιαγραφή: απλοποιείται, γιατί δε χρειάζεται να κρατάµε τον προηγούµενο: είναι διαθέσιµος σαν current.previous. Εισαγωγή: µετά ή πριν από κόµβο µε δεδοµένο κλειδί. Μπορούµε να έχουµε κόµβο κεφαλή και τελείως ανάλογα κόµβο ουρά (tail node). Συντηρούν την αναλλοίωτη ιδιότητα ενός προηγούµενου και ενός επόµενου για κάθε κόµβο δεδοµένων. Ο. Τελέλης Πανεπιστήµιο Πειραιώς οµές εδοµένων 33 / 50

34 ιπλά Συνδεδεµένη Λίστα Κάθε κόµβος έχει δύο αναφορές σε άλλους κόµβους. Μία προς τον επόµενο και µια προς τον προηγούµενο κόµβο. Ο. Τελέλης Πανεπιστήµιο Πειραιώς οµές εδοµένων 34 / 50

35 Ορισµός Κόµβου ιπλά Συνδεδεµένης Λίστας class DoublyLinkedListNode { public int idata; public Object ddata; public DoublyLinkedListNode next; public DoublyLinkedListNode previous; // data key // data item // next node // previous node // public DoublyLinkedListNode(int id, Object dd) { // constructor idata = id; ddata = dd; // end class DoublyLinkedListNode Ο. Τελέλης Πανεπιστήµιο Πειραιώς οµές εδοµένων 35 / 50

36 Κενή ιπλά Συνδεδεµένη Λίστα µε Κεφαλή & Ουρά public DoublyLinkedList() { // Constructor head = new DoublyLinkedListNode(0,null); tail = new DoublyLinkedListNode(0,null); head.next = tail; tail.previous = head; Ο. Τελέλης Πανεπιστήµιο Πειραιώς οµές εδοµένων 36 / 50

37 ιπλά Συνδ/νη Λίστα: Εισαγωγή // insertafter current when current is a referece to node "a" newnode = new DoublyLinkedListNode(id, dd); 1. newnode.previous = current; 2. newnode.next = current.next; 3. newnode.previous.next = newnode; 4. newnode.next.previous = newnode; Ο. Τελέλης Πανεπιστήµιο Πειραιώς οµές εδοµένων 37 / 50

38 ιπλά Συνδ/νη Λίστα: ιαγραφή //delete(x) -- current is a reference to node with key "x" current.previous.next = current.next; current.next.previous = current.previous; Ο. Τελέλης Πανεπιστήµιο Πειραιώς οµές εδοµένων 38 / 50

39 Ορισµός ιπλά Συνδ/νης Λίστας χωρίς Κεφαλή και Ουρά class DoublyLinkedList { private DoublyLinkedListNode first; //ref to first item private DoublyLinkedListNode last; // ref to last item // public DoublyLinkedList() { // constructor first = null; // no items on list yet last = null; Θα εξετάσουµε Εισαγωγή στην αρχή της λίστας: insertfirst() στο τέλος της λίστας: insertlast() µετά από κόµβο µε συγκεκριµένο κλειδί: insertafter(int key) Ο. Τελέλης Πανεπιστήµιο Πειραιώς οµές εδοµένων 39 / 50

40 Εισαγωγή στην Αρχή ιπλά Συνδ/νης Λίστας DoublyLinkedListNode newnode=new DoublyLinkedListNode(id, dd); if (isempty()) last = newnode; else{ first.previous = newnode; newnode.next = first; // if empty list, // last --> newnode // newnode <-- old first // newnode --> old first first = newnode; // first --> newnode Ο. Τελέλης Πανεπιστήµιο Πειραιώς οµές εδοµένων 40 / 50

41 Εισαγωγή στο Τέλος ιπλά Συνδ/νης Λίστας DoublyLinkedListNode newnode=new DoublyLinkedListNode(id, dd); if (isempty()) first = newnode; // if empty list, else { last.next = newnode; newnode.previous = last; last = newnode; Ο. Τελέλης Πανεπιστήµιο Πειραιώς οµές εδοµένων 41 / 50

42 Εισαγωγή µετά από κόµβο σε ιπλά Συνδ/νη Λίστα if(current==last) { // if last node, newnode.next = null; last = newnode; else { // not last node, newnode.next = current.next; current.next.previous = newnode; newnode.previous = current; // old current <-- newnode current.next = newnode; // old current --> newnode Ο. Τελέλης Πανεπιστήµιο Πειραιώς οµές εδοµένων 42 / 50

43 // (assumes non-empty list) public boolean insertafter(int key, int id, Object dd) { DoublyLinkedListNode current = first; // start at beginning while(current.idata!= key) { // until match is found current = current.next; // move to next node if(current == null) return(false); // didn t find it DoublyLinkedListNode newnode = new DoublyLinkedListNode(id,dd); if(current==last) { // if last node, newnode.next = null; // newnode --> null last = newnode; // newnode <-- last else { // not last node, newnode.next = current.next;// newnode --> old next current.next.previous = newnode; newnode.previous = current; current.next = newnode; return true; // old current <-- newnode // old current --> newnode // found it, did insertion Ο. Τελέλης Πανεπιστήµιο Πειραιώς οµές εδοµένων 43 / 50

44 ιαγραφή από την Αρχή ιπλά Συνδ/νης Λίστας if (first.next == null) last = null; else { first.next.previous = null; first = first.next; // if only one item // null <-- old next // first --> old next Ο. Τελέλης Πανεπιστήµιο Πειραιώς οµές εδοµένων 44 / 50

45 ιαγραφή από το Τέλος ιπλά Συνδ/νης Λίστας // delete last node (assumes non-empty list) public Node deletelast() { Node temp = last; if(first.next == null) first=null;// if only one item else last.previous.next = null; // old previous --> null last = last.previous; return temp; // old previous <-- last Ο. Τελέλης Πανεπιστήµιο Πειραιώς οµές εδοµένων 45 / 50

46 ιαγραφή Τυχαίου Κόµβου σε ιπλά Συνδ/νη Λίστα current.previous.next = current.next; current.next.previous = current.previous; Ο. Τελέλης Πανεπιστήµιο Πειραιώς οµές εδοµένων 46 / 50

47 // delete item with given key (assumes non-empty list) public Object delete(int key) { Node current = first; // start at beginning while(current.idata!= key) { // until match is found, current = current.next; // move to next node if(current == null) return(null); // didn t find it if(current==first) // found it; first item? first = current.next; else // old previous --> old next current.previous.next = current.next; if(current==last) // last item? last = current.previous; else // old previous <-- old next current.next.previous = current.previous; return(current.ddata); // return value Ο. Τελέλης Πανεπιστήµιο Πειραιώς οµές εδοµένων 47 / 50

48 Κυκλικά Συνδεδεµένες Λίστες Ο τελευταίος κόµβος έχει ως επόµενο κόµβο τον πρώτο κόµβο. Εστω: h πρώτος κόµβος στη λίστα. t τελευταίος κόµβος στη λίστα. t.next = h; h.previous = t; Εξ ορισµού, στην κυκλικά συνδεδεµένη λίστα κάθε κόµβος έχει προηγούµενο και επόµενο. Μπορούµε να αγνοήσουµε τον κόµβο κεφαλής (head) (εξυπηρετούσε: κάθε κόµβος να έχει έναν προηγούµενο). Μπορούµε να αγνοήσουµε τον κόµβο ουρά (tail) (εξυπηρετούσε: κάθε κόµβος να έχει έναν επόµενο). Σε λίστα µε µόνο 1 κόµβο, ο προηγούµενος και επόµενός του είναι ο ίδιος. Ο. Τελέλης Πανεπιστήµιο Πειραιώς οµές εδοµένων 48 / 50

49 Κυκλική ιπλά Συνδεδεµένη Λίστα first.previous = last; last.next = first; Ο. Τελέλης Πανεπιστήµιο Πειραιώς οµές εδοµένων 49 / 50

50 Σύνοψη Οι λίστες σαν δοµή µοιάζουν στις ϐασικές πράξεις µε τους πίνακες. Υποστηρίζουν δυναµική δέσµευση µνήµης (αντίθετα µε τους πίνακες). εν υποστηρίζουν τυχαία προσπέλαση. Υποστηρίζουν κάποιες διαγραφές σε O(1) χρόνο (αντίθετα µε πίνακες). Εισαγωγή / ιαγραφή: Από αρχή / τέλος σε O(1) χρόνο. Ενδιαµέσως (µετά / πριν από κόµβο) σε O(n) χρόνο (λόγω αναζήτησης). Αναζήτηση: σε O(n) χρόνο. Ερώτηση: µπορούµε να έχουµε τόσο καλή αναζήτηση σε µια ταξινοµηµένη λίστα (απλά / διπλά συνδεδεµένη / κυκλική) όσο σε έναν ταξινοµηµένο πίνακα; Πώς / Γιατί; Ο. Τελέλης Πανεπιστήµιο Πειραιώς οµές εδοµένων 50 / 50

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

4. Συνδεδεμένες Λίστες Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 4. Συνδεδεμένες Λίστες 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 10/11/2016 Εισαγωγή

Διαβάστε περισσότερα

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

Σύνοψη Προηγούμενου. Λίστες (Lists) Συνδεδεμένες Λίστες: Εισαγωγή (1/2) Συνδεδεμένες Λίστες. Ορέστης Τελέλης Σύνοψη Προηγούμενου Λίστες (Lists) Ορέστης Τελέλης telelis@unipi.gr Τμήμα Ψηφιακών Συστημάτων, Πανεπιστήμιο Πειραιώς Στοίβες (Stacks) : στην κορυφή της στοίβας ( ) από την κορυφή της στοίβας ( ) Ουρές

Διαβάστε περισσότερα

Σύνοψη Προηγούμενου (1/2) Στοίβες, Ουρές, Ουρές Προτεραιότητας. Σύνοψη Προηγούμενου (2/2) Σημερινό Μάθημα. Πίνακες. Εισαγωγή, σε χρόνο O(1).

Σύνοψη Προηγούμενου (1/2) Στοίβες, Ουρές, Ουρές Προτεραιότητας. Σύνοψη Προηγούμενου (2/2) Σημερινό Μάθημα. Πίνακες. Εισαγωγή, σε χρόνο O(1). Σύνοψη Προηγούμενου (1/2) Στοίβες, Ουρές, Ουρές Προτεραιότητας Ορέστης Τελέλης telelis@unipi.gr Τμήμα Ψηφιακών Συστημάτων, Πανεπιστήμιο Πειραιώς Πίνακες Εισαγωγή, σε χρόνο O(1). Αναζήτηση, σε χρόνο O(n).

Διαβάστε περισσότερα

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

Συλλογές, Στοίβες και Ουρές Συλλογές, Στοίβες και Ουρές Σε πολλές εφαρμογές μας αρκεί η αναπαράσταση ενός δυναμικού συνόλου με μια δομή δεδομένων η οποία δεν υποστηρίζει την αναζήτηση οποιουδήποτε στοιχείου. Συλλογή (bag) : Επιστρέφει

Διαβάστε περισσότερα

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

Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ευθύγραμμες Απλά Συνδεδεμένες Λίστες (εισαγωγή, εύρεση, διαγραφή) Ευθύγραμμες Διπλά Συνδεδεμένες Λίστες

Διαβάστε περισσότερα

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 3. Στοίβες & Ουρές 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 19/10/2017 Ανακεφαλαίωση:

Διαβάστε περισσότερα

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 3. Στοίβες & Ουρές 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 4/11/2016 Ανακεφαλαίωση:

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Σύνοψη Προηγούµενου (2/2) Στοίβες, Ουρές, Ουρές Προτεραιότητας. Πρόβληµα: Κατασκευή Οµοιόµορφα Τυχαίας Μετάθεσης.

Σύνοψη Προηγούµενου (2/2) Στοίβες, Ουρές, Ουρές Προτεραιότητας. Πρόβληµα: Κατασκευή Οµοιόµορφα Τυχαίας Μετάθεσης. Σύνοψη Προηγούµενου (1/2 Στοίβες, Ουρές, Ουρές Προτεραιότητας Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς Πίνακες Εισαγωγή, σε χρόνο O(1. Αναζήτηση, σε χρόνο O(n.

Διαβάστε περισσότερα

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

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( ) Τύποι Δεδομένων και Απλές Δομές Δεδομένων Παύλος Εφραιμίδης V1.0 (2014-01-13) Απλές Δομές Δεδομένων Στην ενότητα αυτή θα γνωρίσουμε ορισμένες απλές Δομές Δεδομένων και θα τις χρησιμοποιήσουμε για την αποδοτική

Διαβάστε περισσότερα

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

Στοίβες - Ουρές. Στοίβα (stack) Γιάννης Θεοδωρίδης, Νίκος Πελέκης, Άγγελος Πικράκης Τµήµα Πληροφορικής Στοίβες - Ουρές Γιάννης Θεοδωρίδης, Νίκος Πελέκης, Άγγελος Πικράκης Τµήµα Πληροφορικής οµές εδοµένων 1 Στοίβα (stack) οµή τύπουlifo: Last In - First Out (τελευταία εισαγωγή πρώτη εξαγωγή) Περιορισµένος

Διαβάστε περισσότερα

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

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 8: C++ ΒΙΒΛΙΟΗΚΗ STL, ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Δομές Δεδομένων ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής Δομές

Διαβάστε περισσότερα

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

Δομές Δεδομένων & Αλγόριθμοι Ουρές Ουρές Περίληψη Η ΟυράΑΔΤ Υλοποίηση με κυκλικό πίνακα Αυξανόμενη Ουρά βασισμένη σε πίνακα Interface ουράς στην C++ Η Ουρά ADT Η ΑΔΤ Ουρά αποθηκεύει αυθαίρετα αντικείμενα Οι εισαγωγές και διαγραφές

Διαβάστε περισσότερα

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

Δομές Δεδομένων (Data Structures) Δομές Δεδομένων (Data Structures) Στοίβες Ουρές Στοίβες: Βασικές Έννοιες. Ουρές: Βασικές Έννοιες. Βασικές Λειτουργίες. Παραδείγματα. Στοίβες Δομή τύπου LIFO: Last In - First Out (τελευταία εισαγωγή πρώτη

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 10: Λίστες Υλοποίηση & Εφαρμογές Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ευθύγραμμες Απλά Συνδεδεμένες Λίστες (εύρεση, εισαγωγή, διαγραφή) Σύγκριση Συνδεδεμένων Λιστών με Πίνακες

Διαβάστε περισσότερα

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

Δοµές Δεδοµένων. 7η Διάλεξη Αφηρηµένοι Τύποι Δεδοµένων. Ε. Μαρκάκης Δοµές Δεδοµένων 7η Διάλεξη Αφηρηµένοι Τύποι Δεδοµένων Ε. Μαρκάκης Περίληψη Στοίβα ώθησης προς τα κάτω Παραδείγµατα πελατών για στοίβες Υλοποιήσεις στοίβας µε πίνακες και λίστες Γενικές υλοποιήσεις Ουρές

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Κυκλικές Απλά Συνδεδεμένες Λίστες - Κυκλικές Διπλά Συνδεδεμένες

Διαβάστε περισσότερα

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

υαδικά δέντρα αναζήτησης υαδικά δέντρα αναζήτησης οµές εδοµένων 3 ο εξάµηνο Ορισµός δυαδικού δέντρου αναζήτησης Σ ένα δυαδικό δέντρο αναζήτησης, για κάθε κόµβο Χ, Όλα τα κλειδιά(αντικείµενα) στο αριστερό υποδέντρο του Χ έχουν

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

ιαφάνειες παρουσίασης #11

ιαφάνειες παρουσίασης #11 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ http://www.corelab.ece.ntua.gr/courses/programming/ ιδάσκοντες: Στάθης Ζάχος (zachos@cs.ntua.gr) Νίκος Παπασπύρου (nickie@softlab.ntua.gr) ιαφάνειες παρουσίασης

Διαβάστε περισσότερα

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

Οι λίστες, χάνοντας τα πλεονεκτήματα των πινάκων, λύνουν προβλήματα που παρουσιάζουν οι πίνακες Δομές δεδομένων Πίνακες Οι πίνακες είναι το πιο απλό «μέσο» αποθήκευσης ομοειδούς πληροφορίας. Χρησιμοποιούν ακριβώς όση μνήμη χρειάζεται για την αποθήκευση της πληροφορίας Επιτρέπουν την προσπέλαση άμεσα

Διαβάστε περισσότερα

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

Δομές Δεδομένων & Αλγόριθμοι Λίστες Λίστες - Απλά Συνδεδεμένες Λίστες - Διπλά Συνδεδεμένες Λίστες Είδη Γραμμικών Λιστών Σειριακή Λίστα Καταλαμβάνει συνεχόμενες θέσεις κύριας μνήμης Συνδεδεμένη Λίστα Οι κόμβοι βρίσκονται σε απομακρυσμένες

Διαβάστε περισσότερα

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

Διάλεξη 12: Λίστες Υλοποίηση & Εφαρμογές. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 12: Λίστες Υλοποίηση & Εφαρμογές Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Ευθύγραμμες Απλά Συνδεδεμένες Λίστες (εύρεση, εισαγωγή, διαγραφή) - Σύγκριση Συνδεδεμένων Λιστών με Πίνακες

Διαβάστε περισσότερα

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

Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αφηρημένοι Τύποι Δεδομένων (ΑΤΔ) Οι ΑΤΔ Στοίβα και Ουρά Υλοποίηση των ΑΤΔ Στοίβα και Ουρά ΕΠΛ231 Δομές Δεδομένων

Διαβάστε περισσότερα

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

Oι βασικές πράξεις (λειτουργίες) που ορίζονται για τον τύπο στοίβα αναφέρονται παρακάτω: 3 ΣTOIBEΣ KAI OYPEΣ 3.1 ΣΤΟΙΒΕΣ Στοίβα (stack) είναι µία λίστα στην οποία νέα στοιχεία µπορούν να προστεθούν και να αφαιρεθούν µόνο από τη µία άκρη της (κορυφή της στοίβας). Συχνά µία στοίβα αναφέρεται

Διαβάστε περισσότερα

Δομές Δεδομένων & Ανάλυση Αλγορίθμων. 3ο Εξάμηνο. Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα. http://aetos.it.teithe.gr/~demos/teaching_gr.

Δομές Δεδομένων & Ανάλυση Αλγορίθμων. 3ο Εξάμηνο. Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα. http://aetos.it.teithe.gr/~demos/teaching_gr. Δομές Δεδομένων & Ανάλυση Αλγορίθμων 3ο Εξάμηνο Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα http://aetos.it.teithe.gr/~demos/teaching_gr.html Δημοσθένης Σταμάτης Τμήμα Μηχανικών Πληροφορικής ATEI ΘΕΣΣΑΛΟΝΙΚΗΣ

Διαβάστε περισσότερα

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

Γραμμικές λίστες. Γκόγκος Χρήστος ΤΕΙ Ηπείρου Γραμμικές λίστες Γκόγκος Χρήστος ΤΕΙ Ηπείρου Στατική αναπαράσταση γραμμικής λίστας const int MAX = 50000; struct static_list { T elements[max]; int size = 0; ; https://www.securecoding.cert.org/confluence/display/cplusplus/ctr00-cpp.+understand+when+to+prefer+vectors+over+arrays

Διαβάστε περισσότερα

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

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5 Περιεχόµενα 1 Εισαγωγή στις οµές εδοµένων 3 2 Στοίβα (Stack) 5 i ΠΕΡΙΕΧΟΜΕΝΑ ΠΕΡΙΕΧΟΜΕΝΑ ii Πληροφορίες Εργαστηρίου Σκοπός του εργαστηρίου Το εργαστήριο οµές εδοµένων αποσκοπεί στην εφαρµογή των τεχνολογιών

Διαβάστε περισσότερα

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

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ. Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής Δοµές Δεδοµένων & Ανάλυση Αλγορίθµων 3ο Εξάµηνο Υλοποίηση Στοίβας και Ουράς µε Συνδεδεµένες Λίστες http://aetos.it.teithe.gr/~demos/teaching_gr.html Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής ATEI ΘΕΣΣΑΛΟΝΙΚΗΣ

Διαβάστε περισσότερα

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

Εργαστήριο 4: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Ταξινομημένη Λίστα Εργαστήριο 4: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Ταξινομημένη Λίστα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Λίστες -Υλοποίηση ταξινομημένης λίστας με δυναμική δέσμευση μνήμης ΕΠΛ035

Διαβάστε περισσότερα

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

Δοµές Δεδοµένων. 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων. Ε. Μαρκάκης Δοµές Δεδοµένων 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων Ε. Μαρκάκης Περίληψη Χρήση αναδροµικών εξισώσεων στην ανάλυση αλγορίθµων Αφηρηµένοι τύποι δεδοµένων Συλλογές στοιχείων Στοίβα

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Πανεπιστηµιο Πειραιως Σχολη Τεχνολογιων Πληροφορικης και Επικοινωνιων Τµηµα Ψηφιακων Συστηµατων οµές εδοµένων η Εργασία Πανεπιστηµιο Πειραιως Σχολη Τεχνολογιων Πληροφορικης και Επικοινωνιων Τµηµα Ψηφιακων Συστηµατων οµές εδοµένων 2015-2016 1η Εργασία Χρήστος ουλκερίδης Ορέστης Τελέλης 1 Περιγραφή Στην εργασία καλείστε να

Διαβάστε περισσότερα

υναµικές οµές εδοµένων (συν.) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα:

υναµικές οµές εδοµένων (συν.) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: υναµικές οµές εδοµένων (συν.) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Ταξινοµηµένες Λίστες µε δυναµική δέσµευση µνήµης Αναδροµκές συναρτήσεις ΕΠΛ 12 Αρχές Προγραµµατισµού ΙΙ 1 Λίστες

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Δοµές Δεδοµένων. 4η Διάλεξη Στοιχειώδεις Δοµές Δεδοµένων: Πίνακες και Λίστες. Ε. Μαρκάκης Δοµές Δεδοµένων 4η Διάλεξη Στοιχειώδεις Δοµές Δεδοµένων: Πίνακες και Λίστες Ε. Μαρκάκης Εργαστήρια Ώρες εργαστηρίων Τέσσερα τµήµατα εργαστηρίων XXXX001-XXXX060, Δευτέρα 09:00-11:00 (CSLAB II) XXXX061-XXXX120,

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 0: Λίστες ΙΙ Κυκλικές Λίστες Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Κυκλικές Απλά Συνδεδεμένες Λίστες - Κυκλικές Διπλά Συνδεδεμένες

Διαβάστε περισσότερα

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

Δομές Δεδομένων Ενότητα 4 ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ενότητα 4: Ουρές Απόστολος Παπαδόπουλος Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

Διαβάστε περισσότερα

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

Διάλεξη 14: Δομές Δεδομένων ΙΙI (Λίστες και Παραδείγματα) Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ132 Αρχές Προγραμματισμού II Διάλεξη 14: Δομές Δεδομένων ΙΙI (Λίστες και Παραδείγματα) Δημήτρης Ζεϊναλιπούρ http://www.cs.ucy.ac.cy/courses/epl132 14-1 Περιεχόμενο

Διαβάστε περισσότερα

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

Στοιχειώδεις Δομές Δεδομένων Στοιχειώδεις Δομές Δεδομένων Τύποι δεδομένων στη Java Ακέραιοι (int, long) Αριθμοί κινητής υποδιαστολής (float, double) Χαρακτήρες (char) Δυαδικοί (boolean) Από τους παραπάνω μπορούμε να φτιάξουμε σύνθετους

Διαβάστε περισσότερα

υναµικές οµές εδοµένων

υναµικές οµές εδοµένων υναµικές οµές εδοµένων Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: υναµικές οµές εδοµένων Γενικά υναµική έσµευση Μνήµης οµή τύπου structure αυτοαναφορικές δοµές Η δήλωση typedef στη C Αναπαράσταση

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Εργαστήριο 5: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Διπλά Συνδεδεμένη Λίστα Εργαστήριο 5: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Διπλά Συνδεδεμένη Λίστα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Διπλά Συνδεδεμένες Λίστες -Υλοποίηση Διπλά Συνδεδεμένης Λίστας με

Διαβάστε περισσότερα

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

Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής T.E.I. ΘΕΣΣΑΛΟΝΙΚΗΣ Δοµές Δεδοµένων 3ο Εξάµηνο Υλοποίηση Στοίβας και Ουράς µε Συνδεδεµένες Λίστες Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής T.E.I. ΘΕΣΣΑΛΟΝΙΚΗΣ public class LinkedStack //implements Stack // Υλοποίηση στοίβας

Διαβάστε περισσότερα

Ενότητα 2 Στοίβες Ουρές - Λίστες. ΗΥ240 - Παναγιώτα Φατούρου 1

Ενότητα 2 Στοίβες Ουρές - Λίστες. ΗΥ240 - Παναγιώτα Φατούρου 1 Ενότητα 2 Στοίβες Ουρές - Λίστες ΗΥ240 - Παναγιώτα Φατούρου 1 Λίστες Γραµµική λίστα (linear list) είναι ένα σύνολο από n 0 στοιχεία ή κόµβους L 1,..., L n, τα οποία είναι διατεταγµένα µε γραµµική σειρά.

Διαβάστε περισσότερα

Στοίβες Ουρές - Λίστες

Στοίβες Ουρές - Λίστες Ενότητα 3 Στοίβες Ουρές - Λίστες ΗΥ240 - Παναγιώτα Φατούρου 1 Λίστες Γραµµική λίστα (linear list) είναι ένα σύνολο από n 0 στοιχεία ή κόµβους L 1,..., L n, τα οποία είναι διατεταγµένα µε γραµµική σειρά.

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΑΚΑ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΑΚΑ ΣΥΣΤΗΜΑΤΑ

ΠΛΗΡΟΦΟΡΙΑΚΑ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΑΚΑ ΣΥΣΤΗΜΑΤΑ Οικονοµικό Πανεπιστήµιο Αθηνών Τµήµα ιοικητικής Επιστήµης & Τεχνολογίας ΠΛΗΡΟΦΟΡΙΑΚΑ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΑΚΑ ΣΥΣΤΗΜΑΤΑ Κεφάλαιο 9 οµές εδοµένων σε C Γιώργος Γιαγλής Περίληψη Κεφαλαίου 9 οµές εδοµένων υναµικές

Διαβάστε περισσότερα

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

Δομές Δεδομένων - Εργαστήριο 5. Ουρές Προτεραιότητας Ουρές Προτεραιότητας Ουρά Προτεραιότητας (Priority Queue) Μια συλλογή αντικειμένων που χαρακτηρίζονται από μια συγκρίσιμη προτεραιότητα. Έχει την λογική εικόνα μιας δομής δεδομένων όπου, αντικείμενα εισέρχονται

Διαβάστε περισσότερα

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

Κεφάλαιο 5 Συλλογές, Στοίβες και Ουρές Κεφάλαιο 5 Συλλογές, Στοίβες και Ουρές Περιεχόμενα 5.1 Αφηρημένοι τύποι δεδομένων... 94 5.2 Συλλογές και Επαναλήπτες... 95 5.1.1 Εφαρμογή: Υλοποίηση λιστών γειτνίασης γραφήματος... 96 5.2 Στοίβα... 97

Διαβάστε περισσότερα

Στοίβες με Δυναμική Δέσμευση Μνήμης

Στοίβες με Δυναμική Δέσμευση Μνήμης ΕΠΛ 231 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ 10/02/10 Παύλος Αντωνίου Στοίβες με Δυναμική Δέσμευση Μνήμης Στοίβα: Στοίβα είναι μια λίστα που έχει ένα επιπλέον περιορισμό. Ο περιορισμός είναι ότι οι εισαγωγές

Διαβάστε περισσότερα

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

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 12: Δέντρα ΙΙ -Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Δυαδικά Δένδρα - Δυαδικά Δένδρα Αναζήτησης(ΔΔΑ) - Εύρεση Τυχαίου, Μέγιστου, Μικρότερου στοιχείου - Εισαγωγή

Διαβάστε περισσότερα

4 ΔYNAMIKEΣ ΔOMEΣ ΔEΔOMENΩN

4 ΔYNAMIKEΣ ΔOMEΣ ΔEΔOMENΩN 4 ΔYNAMIKEΣ ΔOMEΣ ΔEΔOMENΩN Yπάρχει ένας αριθµός προγραµµατιστικών προβληµάτων, τα οποία είναι δύσκολο να επιλυθούν µε τη βοήθεια των στατικών δοµών δεδοµένων που αναφέραµε µέχρι τώρα. Aυτό γιατί οι δοµές

Διαβάστε περισσότερα

Ανάλυση. Ο εσωτερικός ϐρόχος εκτελείται i + 1 ϕορές, για i = 0,..., n 1.

Ανάλυση. Ο εσωτερικός ϐρόχος εκτελείται i + 1 ϕορές, για i = 0,..., n 1. Σύνοψη Προηγούµενου Πίνακες Arrays Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς Πληροφορίες Μαθήµατος. ιαδικαστικά ϑέµατα. Αντικείµενο Μαθήµατος. Αντικειµενοστρεφής

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

IsEmptyList(L): επιστρέφει true αν L = < >, false

IsEmptyList(L): επιστρέφει true αν L = < >, false ΕΝΟΤΗΤΑ 3 ΓΡΑΜΜΙΚΕΣ ΛΙΣΤΕΣ Ορισµός Γραµµικές Λίστες Γραµµική λίστα (linear list) είναι ένα σύνολο από n 0 κόµβους L 0, L 1,..., L n-1, όπου το στοιχείο L 0 είναι το πρώτο στοιχείο (ή ο πρώτος κόµβος),

Διαβάστε περισσότερα

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

Βασικές οµές εδοµένων Βασικές οµές εδοµένων Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Αφηρηµένοι Τύποι εδοµένων Οι ΑΤ Στοίβα και Ουρά Υλοποίηση των ΑΤ Στοίβα και Ουρά µε ιαδοχική και υναµική Χορήγηση Μνήµης

Διαβάστε περισσότερα

Initialize each person to be free. while (some man is free and hasn't proposed to every woman) { Choose such a man m w = 1 st woman on m's list to

Initialize each person to be free. while (some man is free and hasn't proposed to every woman) { Choose such a man m w = 1 st woman on m's list to Κεφάλαιο 2 Δοµές Δεδοµένων Ι Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne. 1 Δοµές Δεδοµένων Ι Στην ενότητα αυτή θα γνωρίσουµε ορισµένες Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε

Διαβάστε περισσότερα

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

Συνδεδεμένη Λίστα ΣΛ null VK 23 Απλά (και διπλά) συνδεδεµένες Συνδεδεμένη Λίστα ΣΛ Μια αλυσίδα κόµβων όπου κάθε κόµβος δείχνει στον επόµενό του 12 99 37 18 null O κάθε κόµβος έχει 2 τµήµατα: data: τα δεδοµένα (ή µια αναφορά προς αυτά)

Διαβάστε περισσότερα

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

Κατ οίκον Εργασία 2 Σκελετοί Λύσεων Κατ οίκον Εργασία 2 Σκελετοί Λύσεων Άσκηση 1 Ξεκινούμε με τον αριθμό μας, n, και αρχίζουμε να τον διαιρούμε με ακέραιους ξεκινώντας με το 2 και προχωρώντας στο 3, 4, 5,. Όταν εντοπίσουμε πως ένας αριθμός

Διαβάστε περισσότερα

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 8: Αφηρημένοι Τύποι Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αφηρημένοι Τύποι Δεδομένων (ΑΤΔ) Οι ΑΤΔ Στοίβα και Ουρά Υλοποίηση των ΑΤΔ Στοίβα και Ουρά με Στατική Δέσμευση

Διαβάστε περισσότερα

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

Δομές Δεδομένων - Εργαστήριο 2. Λίστες Λίστες Λίστες (Lists) : Συλλογή δεδομένων σε δυναμικά δεσμευμένους κόμβους. Κάθε κόμβος περιέχει συνδέσεις προς άλλους κόμβους. Προσπέλαση -στού κόμβου διατρέχοντας όλους τους προηγούμενους. Πολλές παραλλαγές

Διαβάστε περισσότερα

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

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Υλοποίηση ΑΤΔ με Συνδεδεμένες Λίστες -

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ 2 ΛΥΣΕΙΣ Γραμμικές Δομές Δεδομένων, Ταξινόμηση ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 231: Δομές Δεδομένων και Αλγόριθμοι Εαρινό Εξάμηνο 2013 ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ 2 ΛΥΣΕΙΣ Γραμμικές Δομές Δεδομένων, Ταξινόμηση Διδάσκων Καθηγητής: Παναγιώτης Ανδρέου

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές Μαθήματα από το lab Υπενθύμιση: Η άσκηση ζητούσε να υλοποιήσετε μία κλάση vector που να διαχειρίζεται διανύσματα οποιουδήποτε

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας Στην άσκηση αυτή θα υλοποιήσετε μια κλάση Geometric η οποία διαχειρίζεται μια γεωμετρική ακολουθία ακεραίων

Διαβάστε περισσότερα

Προγραμματισμός. Linked Lists

Προγραμματισμός. Linked Lists Linked Lists Διαφορές από πίνακες Εύκολη αυξομείωση στοιχείων Επακριβής χρήση μνήμης Δύσκολο random access Περισσότερες απαιτήσεις μνήμης Abstraction Πίνακες: + και - + Γρήγορη προσπέλαση. -- Πολύπλοκη

Διαβάστε περισσότερα

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ (Οι ερωτήσεις µε κίτρινη υπογράµµιση είναι εκτός ύλης για φέτος) ΕΙΣΑΓΩΓΗ Q1. Οι Πρωταρχικοί τύποι (primitive types) στη Java 1. Είναι όλοι οι ακέραιοι και όλοι οι πραγµατικοί

Διαβάστε περισσότερα

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

Διάλεξη 08: ΛίστεςΙΙ Κυκλικές Λίστες. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 0: ΛίστεςΙΙ Κυκλικές Λίστες Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Κυκλικές Απλά Συνδεδεμένες Λίστες - Κυκλικές Διπλά Συνδεδεμένες Λίστες - Τεχνικές Μείωσης Χώρου Διδάσκων:

Διαβάστε περισσότερα

Προγραμματισμός. Linked Lists

Προγραμματισμός. Linked Lists Linked Lists Διαφορές από πίνακες Εύκολη αυξομείωση στοιχείων Επακριβής χρήση μνήμης Δύσκολο random access Περισσότερες απαιτήσεις μνήμης Abstraction Πίνακες: + και - + Γρήγορη προσπέλαση. -- Πολύπλοκη

Διαβάστε περισσότερα

public class ArrayStack implements Stack {

public class ArrayStack implements Stack { public class ArrayStack implements Stack { private static final int DEF_STACK_SIZE=2; //Array of objects private Object[] S; private int index ; // index, top, last, position // Returns the last item of

Διαβάστε περισσότερα

#2 Αλγόριθµοι, οµές εδοµένων και Πολυπλοκότητα

#2 Αλγόριθµοι, οµές εδοµένων και Πολυπλοκότητα #2 Αλγόριθµοι, οµές εδοµένων και Πολυπλοκότητα ηµήτρης Ν. Σερπάνος Εργαστήριο Συστηµάτων Υπολογιστών Τµήµα Ηλεκτρολόγων Μηχ. & Τεχνολογίας Υπολογιστών Αλγόριθµοι, οµές εδοµένων και Πολυπλοκότητα Αλγόριθµοι:

Διαβάστε περισσότερα

Υλοποίηση Λιστών. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα:

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

Διαβάστε περισσότερα

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

Διάλεξη 12: Δέντρα ΙΙ Δυαδικά Δέντρα Διάλεξη 12: Δέντρα ΙΙ Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Δυαδικά Δένδρα Δυαδικά Δένδρα Αναζήτησης (ΔΔΑ) Εύρεση Τυχαίου, Μέγιστου, Μικρότερου στοιχείου Εισαγωγή στοιχείου

Διαβάστε περισσότερα

Προγραµµατισµός. Linked Lists

Προγραµµατισµός. Linked Lists Linked Lists ιαφορές από πίνακες Εύκολη αυξοµείωση στοιχείων Επακριβής χρήση µνήµης ύσκολο random access Περισσότερες απαιτήσεις µνήµης Abstraction Πίνακες: + και - + Γρήγορη προσπέλαση. -- Πολύπλοκη η

Διαβάστε περισσότερα

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

ΕΡΓΑΣΤΗΡΙΟ 5 ΣΗΜΕΙΩΣΕΙΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2017-2018 ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ ΜΑΘΗΜΑ: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Ουρές ΕΡΓΑΣΤΗΡΙΟ 5 ΣΗΜΕΙΩΣΕΙΣ Μια ουρά αποτελεί μια δομή δεδομένων στη λογική του First-in

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι:

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Μια δομή δεδομένων στην πληροφορική, συχνά αναπαριστά οντότητες του φυσικού κόσμου στον υπολογιστή. Για την αναπαράσταση αυτή, δημιουργούμε πρώτα ένα αφηρημένο μοντέλο στο οποίο προσδιορίζονται

Διαβάστε περισσότερα

Ενότητα 2 Στοίβες Ουρές - Λίστες

Ενότητα 2 Στοίβες Ουρές - Λίστες Ενότητα 2 Στοίβες Ουρές - Λίστες ΗΥ240 - Παναγιώτα Φατούρου 1 Λίστες Γραµµική λίστα (linear list) είναι ένα σύνολο από n 0 στοιχεία ή κόµβους e 1,..., e n, τα οποία είναι διατεταγµένα µε γραµµική σειρά.

Διαβάστε περισσότερα

Διάλεξη 15: Δομές Δεδομένων IV (Διπλά Συνδεδεμένες Λίστες)

Διάλεξη 15: Δομές Δεδομένων IV (Διπλά Συνδεδεμένες Λίστες) Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Διάλεξη 15: Δομές Δεδομένων IV (Διπλά Συνδεδεμένες Λίστες) Δημήτρης Ζεϊναλιπούρ http://www.cs.ucy.ac.cy/courses/epl232

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Στην άσκηση αυτή θα υλοποιήσετε μια κλάση RandomVector η οποία διαχειρίζεται ένα τυχαίο διάνυσμα ακεραίων το οποίο μπορεί να έχει οποιοδήποτε

Διαβάστε περισσότερα

POINTERS, AGGREGATION, COMPOSITION

POINTERS, AGGREGATION, COMPOSITION POINTERS, AGGREGATION, COMPOSITION POINTERS TO OBJECTS Η κλάση mystring class mystring private: char *s; int size; public: mystring(const char *); ~mystring(); char *GetString(); int GetSize(); ; mystring::mystring(const

Διαβάστε περισσότερα

Βασικές Δομές Δεδομένων

Βασικές Δομές Δεδομένων Βασικές Δομές Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αφηρημένοι Τύποι Δεδομένων Οι ΑΤΔ Στοίβα και Ουρά Υλοποίηση των ΑΤΔ Στοίβα και Ουρά με Διαδοχική και Δυναμική Χορήγηση

Διαβάστε περισσότερα

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

Φροντιστήριο 4 Σκελετοί Λύσεων Φροντιστήριο 4 Σκελετοί Λύσεων 1. Ο ζητούμενος ΑΤΔ μπορεί να υλοποιηθεί ως εξής: (i) Διαδοχική χορήγηση μνήμης Υποθέτουμε ότι οι λίστες μας έχουν μέγιστο μέγεθος max και χρησιμοποιούμε τη δομή type elements[max];

Διαβάστε περισσότερα

υναµική έσµευση Μνήµης (συν.) ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 2 Εφαρµογή

υναµική έσµευση Μνήµης (συν.) ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 2 Εφαρµογή υναµική έσµευση Μνήµης (συν.) Στην ενότητα αυτή θα µελετηθούν: Μια εφαρµογή συνδεδεµένων λιστών ιπλά συνδεδεµένες Λίστες ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 1 Εφαρµογή Ζητούµενο: Πρόγραµµα που παίρνει σαν

Διαβάστε περισσότερα

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων ΟΝΟΜΑΤΕΠΩΝΥΜΟ: ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ AM: Δοµές Δεδοµένων Πτυχιακή Εξεταστική Ιούλιος 2014 Διδάσκων : Ευάγγελος Μαρκάκης 09.07.2014 ΥΠΟΓΡΑΦΗ ΕΠΟΠΤΗ: Διάρκεια εξέτασης : 2 ώρες

Διαβάστε περισσότερα

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

Φροντιστήριο 4 Σκελετοί Λύσεων Φροντιστήριο 4 Σκελετοί Λύσεων Άσκηση 1 Υποθέτουμε πως οι λίστες είναι υλοποιημένες χρησιμοποιώντας τις πιο κάτω δομές. typedef struct Node{ type data; struct node *next; node; node *top; list; Υλοποιούμε

Διαβάστε περισσότερα

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

Ουρά Προτεραιότητας (priority queue) Ουρά Προτεραιότητας (priority queue) Δομή δεδομένων που υποστηρίζει δύο βασικές λειτουργίες : Εισαγωγή στοιχείου με δεδομένο κλειδί. Επιστροφή ενός στοιχείου με μέγιστο (ή ελάχιστο) κλειδί και διαγραφή

Διαβάστε περισσότερα

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 9: Στοίβες:Υλοποίηση & Εφαρμογές Στην ενότητα αυτή θα μελετηθεί η χρήση στοιβών στις εξής εφαρμογές: Υλοποίηση Στοιβών με Δυναμική Δέσμευση Μνήμης Εφαρμογή Στοιβών 1: Αναδρομικές συναρτήσεις Εφαρμογή

Διαβάστε περισσότερα

Ουρές Προτεραιότητας: Υπενθύμιση. Σωροί / Αναδρομή / Ταξινόμηση. Υλοποίηση Σωρού. Σωρός (Εισαγωγή) Ορέστης Τελέλης

Ουρές Προτεραιότητας: Υπενθύμιση. Σωροί / Αναδρομή / Ταξινόμηση. Υλοποίηση Σωρού. Σωρός (Εισαγωγή) Ορέστης Τελέλης Ουρές Προτεραιότητας: Υπενθύμιση Σωροί / Αναδρομή / Ταξινόμηση Ορέστης Τελέλης telelis@unipi.gr Τμήμα Ψηφιακών Συστημάτων, Πανεπιστήμιο Πειραιώς (Abstract Data Type) με μεθόδους: Μπορεί να υλοποιηθεί με

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα μέσα σε αντικείμενα Αντικείμενα ως επιστρεφόμενες τιμές Αντικείμενα με πίνακες

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα μέσα σε αντικείμενα Αντικείμενα ως επιστρεφόμενες τιμές Αντικείμενα με πίνακες ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα μέσα σε αντικείμενα Αντικείμενα ως επιστρεφόμενες τιμές Αντικείμενα με πίνακες ANTIKEIMENA MEΣΑ ΣΕ ΑΝΤΙΚΕΙΜΕΝΑ Αντικείμενα μέσα σε αντικείμενα Εκτός

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Διάλεξη 15: Δομές Δεδομένων IV (Διπλά Συνδεδεμένες Λίστες)

Διάλεξη 15: Δομές Δεδομένων IV (Διπλά Συνδεδεμένες Λίστες) Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ132 Αρχές Προγραμματισμού II Διάλεξη 15: Δομές Δεδομένων IV (Διπλά Συνδεδεμένες Λίστες) Δημήτρης Ζεϊναλιπούρ http://www.cs.ucy.ac.cy/courses/epl132 15-1 Περιεχόμενο

Διαβάστε περισσότερα

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Εξωτερική Αναζήτηση και Β-δέντρα Κεφάλαιο 16. Ε. Μαρκάκης Επίκουρος Καθηγητής

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Εξωτερική Αναζήτηση και Β-δέντρα Κεφάλαιο 16. Ε. Μαρκάκης Επίκουρος Καθηγητής ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Εξωτερική Αναζήτηση και Β-δέντρα Κεφάλαιο 16 Ε. Μαρκάκης Επίκουρος Καθηγητής Περίληψη Ακολουθιακή πρόσβαση Β-δέντρα Υλοποίηση πίνακα συµβόλων µε Β-δέντρα Αναζήτηση Εισαγωγή Δοµές Δεδοµένων

Διαβάστε περισσότερα

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

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 10: Στοίβες:Υλοποίηση& Εφαρμογές Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Υλοποίηση Στοιβών με Δυναμική Δέσμευση Μνήμης - Εφαρμογή Στοιβών 1: Αναδρομικές συναρτήσεις - Εφαρμογή

Διαβάστε περισσότερα