Λίστες (Lists) Ορέστης Τελέλης. Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς
|
|
- Ελευθέριος Ασπάσιος
- 7 χρόνια πριν
- Προβολές:
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. Συνδεδεμένες Λίστες 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 10/11/2016 Εισαγωγή
Διαβάστε περισσότεραΣύνοψη Προηγούμενου. Λίστες (Lists) Συνδεδεμένες Λίστες: Εισαγωγή (1/2) Συνδεδεμένες Λίστες. Ορέστης Τελέλης
Σύνοψη Προηγούμενου Λίστες (Lists) Ορέστης Τελέλης telelis@unipi.gr Τμήμα Ψηφιακών Συστημάτων, Πανεπιστήμιο Πειραιώς Στοίβες (Stacks) : στην κορυφή της στοίβας ( ) από την κορυφή της στοίβας ( ) Ουρές
Διαβάστε περισσότεραΣύνοψη Προηγούμενου (1/2) Στοίβες, Ουρές, Ουρές Προτεραιότητας. Σύνοψη Προηγούμενου (2/2) Σημερινό Μάθημα. Πίνακες. Εισαγωγή, σε χρόνο O(1).
Σύνοψη Προηγούμενου (1/2) Στοίβες, Ουρές, Ουρές Προτεραιότητας Ορέστης Τελέλης telelis@unipi.gr Τμήμα Ψηφιακών Συστημάτων, Πανεπιστήμιο Πειραιώς Πίνακες Εισαγωγή, σε χρόνο O(1). Αναζήτηση, σε χρόνο O(n).
Διαβάστε περισσότεραΣυλλογές, Στοίβες και Ουρές
Συλλογές, Στοίβες και Ουρές Σε πολλές εφαρμογές μας αρκεί η αναπαράσταση ενός δυναμικού συνόλου με μια δομή δεδομένων η οποία δεν υποστηρίζει την αναζήτηση οποιουδήποτε στοιχείου. Συλλογή (bag) : Επιστρέφει
Διαβάστε περισσότεραΔιάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές
Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ευθύγραμμες Απλά Συνδεδεμένες Λίστες (εισαγωγή, εύρεση, διαγραφή) Ευθύγραμμες Διπλά Συνδεδεμένες Λίστες
Διαβάστε περισσότεραΠανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων
Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 3. Στοίβες & Ουρές 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 19/10/2017 Ανακεφαλαίωση:
Διαβάστε περισσότεραΠανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων
Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 3. Στοίβες & Ουρές 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 4/11/2016 Ανακεφαλαίωση:
Διαβάστε περισσότεραΒασικές Έννοιες Δοµών Δεδοµένων
Δοµές Δεδοµένων Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλήµατος του ευσταθούς ταιριάσµατος Βασικές Έννοιες
Διαβάστε περισσότεραΣύνοψη Προηγούµενου (2/2) Στοίβες, Ουρές, Ουρές Προτεραιότητας. Πρόβληµα: Κατασκευή Οµοιόµορφα Τυχαίας Μετάθεσης.
Σύνοψη Προηγούµενου (1/2 Στοίβες, Ουρές, Ουρές Προτεραιότητας Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς Πίνακες Εισαγωγή, σε χρόνο O(1. Αναζήτηση, σε χρόνο O(n.
Διαβάστε περισσότεραΤύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )
Τύποι Δεδομένων και Απλές Δομές Δεδομένων Παύλος Εφραιμίδης V1.0 (2014-01-13) Απλές Δομές Δεδομένων Στην ενότητα αυτή θα γνωρίσουμε ορισμένες απλές Δομές Δεδομένων και θα τις χρησιμοποιήσουμε για την αποδοτική
Διαβάστε περισσότεραΣτοίβες - Ουρές. Στοίβα (stack) Γιάννης Θεοδωρίδης, Νίκος Πελέκης, Άγγελος Πικράκης Τµήµα Πληροφορικής
Στοίβες - Ουρές Γιάννης Θεοδωρίδης, Νίκος Πελέκης, Άγγελος Πικράκης Τµήµα Πληροφορικής οµές εδοµένων 1 Στοίβα (stack) οµή τύπουlifo: Last In - First Out (τελευταία εισαγωγή πρώτη εξαγωγή) Περιορισµένος
Διαβάστε περισσότεραΟντοκεντρικός Προγραμματισμός
Οντοκεντρικός Προγραμματισμός Ενότητα 8: C++ ΒΙΒΛΙΟΗΚΗ STL, ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Δομές Δεδομένων ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής Δομές
Διαβάστε περισσότεραΔομές Δεδομένων & Αλγόριθμοι
Ουρές Ουρές Περίληψη Η ΟυράΑΔΤ Υλοποίηση με κυκλικό πίνακα Αυξανόμενη Ουρά βασισμένη σε πίνακα Interface ουράς στην C++ Η Ουρά ADT Η ΑΔΤ Ουρά αποθηκεύει αυθαίρετα αντικείμενα Οι εισαγωγές και διαγραφές
Διαβάστε περισσότεραΔομές Δεδομένων (Data Structures)
Δομές Δεδομένων (Data Structures) Στοίβες Ουρές Στοίβες: Βασικές Έννοιες. Ουρές: Βασικές Έννοιες. Βασικές Λειτουργίες. Παραδείγματα. Στοίβες Δομή τύπου LIFO: Last In - First Out (τελευταία εισαγωγή πρώτη
Διαβάστε περισσότεραΑπλές Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες απλές Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλή
Απλές Δοµές Δεδοµένων Απλές Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες απλές Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλήµατος του ευσταθούς ταιριάσµατος
Διαβάστε περισσότεραΔιδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ
Διάλεξη 10: Λίστες Υλοποίηση & Εφαρμογές Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ευθύγραμμες Απλά Συνδεδεμένες Λίστες (εύρεση, εισαγωγή, διαγραφή) Σύγκριση Συνδεδεμένων Λιστών με Πίνακες
Διαβάστε περισσότεραΔοµές Δεδοµένων. 7η Διάλεξη Αφηρηµένοι Τύποι Δεδοµένων. Ε. Μαρκάκης
Δοµές Δεδοµένων 7η Διάλεξη Αφηρηµένοι Τύποι Δεδοµένων Ε. Μαρκάκης Περίληψη Στοίβα ώθησης προς τα κάτω Παραδείγµατα πελατών για στοίβες Υλοποιήσεις στοίβας µε πίνακες και λίστες Γενικές υλοποιήσεις Ουρές
Διαβάστε περισσότεραΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές
ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 2 Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα
Διαβάστε περισσότεραΔιάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες
ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Κυκλικές Απλά Συνδεδεμένες Λίστες - Κυκλικές Διπλά Συνδεδεμένες
Διαβάστε περισσότεραυαδικά δέντρα αναζήτησης
υαδικά δέντρα αναζήτησης οµές εδοµένων 3 ο εξάµηνο Ορισµός δυαδικού δέντρου αναζήτησης Σ ένα δυαδικό δέντρο αναζήτησης, για κάθε κόµβο Χ, Όλα τα κλειδιά(αντικείµενα) στο αριστερό υποδέντρο του Χ έχουν
Διαβάστε περισσότεραΔιάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις
ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 16: Σωροί Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις Ουρά Προτεραιότητας (Priority
Διαβάστε περισσότεραΔιάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις
ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 16: Σωροί Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις Ουρά Προτεραιότητας Η δομή
Διαβάστε περισσότεραιαφάνειες παρουσίασης #11
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ http://www.corelab.ece.ntua.gr/courses/programming/ ιδάσκοντες: Στάθης Ζάχος (zachos@cs.ntua.gr) Νίκος Παπασπύρου (nickie@softlab.ntua.gr) ιαφάνειες παρουσίασης
Διαβάστε περισσότεραΟι λίστες, χάνοντας τα πλεονεκτήματα των πινάκων, λύνουν προβλήματα που παρουσιάζουν οι πίνακες
Δομές δεδομένων Πίνακες Οι πίνακες είναι το πιο απλό «μέσο» αποθήκευσης ομοειδούς πληροφορίας. Χρησιμοποιούν ακριβώς όση μνήμη χρειάζεται για την αποθήκευση της πληροφορίας Επιτρέπουν την προσπέλαση άμεσα
Διαβάστε περισσότεραΔομές Δεδομένων & Αλγόριθμοι
Λίστες Λίστες - Απλά Συνδεδεμένες Λίστες - Διπλά Συνδεδεμένες Λίστες Είδη Γραμμικών Λιστών Σειριακή Λίστα Καταλαμβάνει συνεχόμενες θέσεις κύριας μνήμης Συνδεδεμένη Λίστα Οι κόμβοι βρίσκονται σε απομακρυσμένες
Διαβάστε περισσότεραΔιάλεξη 12: Λίστες Υλοποίηση & Εφαρμογές. Διδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 12: Λίστες Υλοποίηση & Εφαρμογές Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Ευθύγραμμες Απλά Συνδεδεμένες Λίστες (εύρεση, εισαγωγή, διαγραφή) - Σύγκριση Συνδεδεμένων Λιστών με Πίνακες
Διαβάστε περισσότεραΔιάλεξη 05: Αφηρημένοι Τύποι Δεδομένων
Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αφηρημένοι Τύποι Δεδομένων (ΑΤΔ) Οι ΑΤΔ Στοίβα και Ουρά Υλοποίηση των ΑΤΔ Στοίβα και Ουρά ΕΠΛ231 Δομές Δεδομένων
Διαβάστε περισσότερα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.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 i ΠΕΡΙΕΧΟΜΕΝΑ ΠΕΡΙΕΧΟΜΕΝΑ ii Πληροφορίες Εργαστηρίου Σκοπός του εργαστηρίου Το εργαστήριο οµές εδοµένων αποσκοπεί στην εφαρµογή των τεχνολογιών
Διαβάστε περισσότεραΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ. Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής
Δοµές Δεδοµένων & Ανάλυση Αλγορίθµων 3ο Εξάµηνο Υλοποίηση Στοίβας και Ουράς µε Συνδεδεµένες Λίστες http://aetos.it.teithe.gr/~demos/teaching_gr.html Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής ATEI ΘΕΣΣΑΛΟΝΙΚΗΣ
Διαβάστε περισσότεραΕργαστήριο 4: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Ταξινομημένη Λίστα
Εργαστήριο 4: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Ταξινομημένη Λίστα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Λίστες -Υλοποίηση ταξινομημένης λίστας με δυναμική δέσμευση μνήμης ΕΠΛ035
Διαβάστε περισσότεραΔοµές Δεδοµένων. 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων. Ε. Μαρκάκης
Δοµές Δεδοµένων 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων Ε. Μαρκάκης Περίληψη Χρήση αναδροµικών εξισώσεων στην ανάλυση αλγορίθµων Αφηρηµένοι τύποι δεδοµένων Συλλογές στοιχείων Στοίβα
Διαβάστε περισσότεραΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Στοιχειώδεις Δοµές Δεδοµένων Λίστες Κεφάλαιο 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 ο Συνδεδεµένες Λίστες Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης Ανασκόπηση ΟΑΤ λίστα Ακολουθιακή λίστα Συνδεδεµένη λίστα
Διαβάστε περισσότεραΔοµές Δεδοµένων. 4η Διάλεξη Στοιχειώδεις Δοµές Δεδοµένων: Πίνακες και Λίστες. Ε. Μαρκάκης
Δοµές Δεδοµένων 4η Διάλεξη Στοιχειώδεις Δοµές Δεδοµένων: Πίνακες και Λίστες Ε. Μαρκάκης Εργαστήρια Ώρες εργαστηρίων Τέσσερα τµήµατα εργαστηρίων XXXX001-XXXX060, Δευτέρα 09:00-11:00 (CSLAB II) XXXX061-XXXX120,
Διαβάστε περισσότεραΠΛΗ111. Ανοιξη Μάθηµα 5 ο. Ουρά. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης
ΠΛΗ οµηµένος Προγραµµατισµός Ανοιξη 5 Μάθηµα 5 ο Ουρά Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης Ανασκόπηση Αφηρηµένος Τύπος εδοµένων Ουρά Υλοποίηση µε Κυκλικό Πίνακα Υλοποίηση
Διαβάστε περισσότεραΔιάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες
ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 0: Λίστες ΙΙ Κυκλικές Λίστες Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Κυκλικές Απλά Συνδεδεμένες Λίστες - Κυκλικές Διπλά Συνδεδεμένες
Διαβάστε περισσότεραΔομές Δεδομένων Ενότητα 4
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ενότητα 4: Ουρές Απόστολος Παπαδόπουλος Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό
Διαβάστε περισσότεραΔιάλεξη 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) Ε. Μαρκάκης Επικ. Καθηγητής Περίληψη Συνδεδεµένες λίστες είδη λιστών Παραδείγµατα µε επεξεργασία λιστών Συµβάσεις αρχής και
Διαβάστε περισσότεραΕργαστήριο 5: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Διπλά Συνδεδεμένη Λίστα
Εργαστήριο 5: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Διπλά Συνδεδεμένη Λίστα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Διπλά Συνδεδεμένες Λίστες -Υλοποίηση Διπλά Συνδεδεμένης Λίστας με
Διαβάστε περισσότεραΔηµοσθένης Σταµάτης Τµήµα Πληροφορικής T.E.I. ΘΕΣΣΑΛΟΝΙΚΗΣ
Δοµές Δεδοµένων 3ο Εξάµηνο Υλοποίηση Στοίβας και Ουράς µε Συνδεδεµένες Λίστες Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής T.E.I. ΘΕΣΣΑΛΟΝΙΚΗΣ public class LinkedStack //implements Stack // Υλοποίηση στοίβας
Διαβάστε περισσότεραΕνότητα 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. Ουρές Προτεραιότητας
Ουρές Προτεραιότητας Ουρά Προτεραιότητας (Priority Queue) Μια συλλογή αντικειμένων που χαρακτηρίζονται από μια συγκρίσιμη προτεραιότητα. Έχει την λογική εικόνα μιας δομής δεδομένων όπου, αντικείμενα εισέρχονται
Διαβάστε περισσότεραΚεφάλαιο 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 Yπάρχει ένας αριθµός προγραµµατιστικών προβληµάτων, τα οποία είναι δύσκολο να επιλυθούν µε τη βοήθεια των στατικών δοµών δεδοµένων που αναφέραµε µέχρι τώρα. Aυτό γιατί οι δοµές
Διαβάστε περισσότεραΑνάλυση. Ο εσωτερικός ϐρόχος εκτελείται i + 1 ϕορές, για i = 0,..., n 1.
Σύνοψη Προηγούµενου Πίνακες Arrays Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς Πληροφορίες Μαθήµατος. ιαδικαστικά ϑέµατα. Αντικείµενο Μαθήµατος. Αντικειµενοστρεφής
Διαβάστε περισσότεραΠΛΗ111. Ανοιξη Μάθηµα 4 ο. Στοίβα. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης
ΠΛΗ111 οµηµένος Προγραµµατισµός Ανοιξη 2005 Μάθηµα 4 ο Στοίβα Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης Ανασκόπηση Αφηρηµένος Τύπος εδοµένων Στοίβα Υλοποίηση µε Πίνακα Υλοποίηση
Διαβάστε περισσότερα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
Κεφάλαιο 2 Δοµές Δεδοµένων Ι Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne. 1 Δοµές Δεδοµένων Ι Στην ενότητα αυτή θα γνωρίσουµε ορισµένες Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε
Διαβάστε περισσότεραΣυνδεδεμένη Λίστα ΣΛ null VK 23
Απλά (και διπλά) συνδεδεµένες Συνδεδεμένη Λίστα ΣΛ Μια αλυσίδα κόµβων όπου κάθε κόµβος δείχνει στον επόµενό του 12 99 37 18 null O κάθε κόµβος έχει 2 τµήµατα: data: τα δεδοµένα (ή µια αναφορά προς αυτά)
Διαβάστε περισσότεραΚατ οίκον Εργασία 2 Σκελετοί Λύσεων
Κατ οίκον Εργασία 2 Σκελετοί Λύσεων Άσκηση 1 Ξεκινούμε με τον αριθμό μας, n, και αρχίζουμε να τον διαιρούμε με ακέραιους ξεκινώντας με το 2 και προχωρώντας στο 3, 4, 5,. Όταν εντοπίσουμε πως ένας αριθμός
Διαβάστε περισσότεραΔιδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ
Διάλεξη 8: Αφηρημένοι Τύποι Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αφηρημένοι Τύποι Δεδομένων (ΑΤΔ) Οι ΑΤΔ Στοίβα και Ουρά Υλοποίηση των ΑΤΔ Στοίβα και Ουρά με Στατική Δέσμευση
Διαβάστε περισσότεραΔομές Δεδομένων - Εργαστήριο 2. Λίστες
Λίστες Λίστες (Lists) : Συλλογή δεδομένων σε δυναμικά δεσμευμένους κόμβους. Κάθε κόμβος περιέχει συνδέσεις προς άλλους κόμβους. Προσπέλαση -στού κόμβου διατρέχοντας όλους τους προηγούμενους. Πολλές παραλλαγές
Διαβάστε περισσότεραΔιάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών
ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Υλοποίηση ΑΤΔ με Συνδεδεμένες Λίστες -
Διαβάστε περισσότεραΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ 2 ΛΥΣΕΙΣ Γραμμικές Δομές Δεδομένων, Ταξινόμηση
ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 231: Δομές Δεδομένων και Αλγόριθμοι Εαρινό Εξάμηνο 2013 ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ 2 ΛΥΣΕΙΣ Γραμμικές Δομές Δεδομένων, Ταξινόμηση Διδάσκων Καθηγητής: Παναγιώτης Ανδρέου
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές Μαθήματα από το lab Υπενθύμιση: Η άσκηση ζητούσε να υλοποιήσετε μία κλάση vector που να διαχειρίζεται διανύσματα οποιουδήποτε
Διαβάστε περισσότεραΔομές Δεδομένων. Ενότητα 6: Εφαρμογή Συνδεδεμένων Λιστών: Αλφαβητικό ευρετήριο κειμένου- Υλοποίηση ΑΤΔ Στοίβα και Ουρά με δείκτες
Ενότητα 6: Εφαρμογή Συνδεδεμένων Λιστών: Αλφαβητικό ευρετήριο κειμένου- Υλοποίηση ΑΤΔ Στοίβα και Ουρά με δείκτες Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες
Διαβάστε περισσότεραΔιάλεξη 26: Σωροί. Διδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 26: Σωροί Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας -Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις Διδάσκων: Παναγιώτης Ανδρέου ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας Στην άσκηση αυτή θα υλοποιήσετε μια κλάση Geometric η οποία διαχειρίζεται μια γεωμετρική ακολουθία ακεραίων
Διαβάστε περισσότεραΠρογραμματισμός. Linked Lists
Linked Lists Διαφορές από πίνακες Εύκολη αυξομείωση στοιχείων Επακριβής χρήση μνήμης Δύσκολο random access Περισσότερες απαιτήσεις μνήμης Abstraction Πίνακες: + και - + Γρήγορη προσπέλαση. -- Πολύπλοκη
Διαβάστε περισσότεραΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ
ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ (Οι ερωτήσεις µε κίτρινη υπογράµµιση είναι εκτός ύλης για φέτος) ΕΙΣΑΓΩΓΗ Q1. Οι Πρωταρχικοί τύποι (primitive types) στη Java 1. Είναι όλοι οι ακέραιοι και όλοι οι πραγµατικοί
Διαβάστε περισσότεραΔιάλεξη 08: ΛίστεςΙΙ Κυκλικές Λίστες. Διδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 0: ΛίστεςΙΙ Κυκλικές Λίστες Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Κυκλικές Απλά Συνδεδεμένες Λίστες - Κυκλικές Διπλά Συνδεδεμένες Λίστες - Τεχνικές Μείωσης Χώρου Διδάσκων:
Διαβάστε περισσότεραΠρογραμματισμός. Linked Lists
Linked Lists Διαφορές από πίνακες Εύκολη αυξομείωση στοιχείων Επακριβής χρήση μνήμης Δύσκολο random access Περισσότερες απαιτήσεις μνήμης Abstraction Πίνακες: + και - + Γρήγορη προσπέλαση. -- Πολύπλοκη
Διαβάστε περισσότερα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 Αλγόριθµοι, οµές εδοµένων και Πολυπλοκότητα ηµήτρης Ν. Σερπάνος Εργαστήριο Συστηµάτων Υπολογιστών Τµήµα Ηλεκτρολόγων Μηχ. & Τεχνολογίας Υπολογιστών Αλγόριθµοι, οµές εδοµένων και Πολυπλοκότητα Αλγόριθµοι:
Διαβάστε περισσότεραΥλοποίηση Λιστών. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα:
Υλοποίηση Λιστών Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ευθύγραμμές Απλά και Διπλά Συνδεδεμένες Λίστες Κυκλικές Απλά και Διπλά Συνδεδεμένες Λίστες Τεχνικές Μείωσης Μνήμης ΕΠΛ 231 Δομές
Διαβάστε περισσότεραΔιάλεξη 12: Δέντρα ΙΙ Δυαδικά Δέντρα
Διάλεξη 12: Δέντρα ΙΙ Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Δυαδικά Δένδρα Δυαδικά Δένδρα Αναζήτησης (ΔΔΑ) Εύρεση Τυχαίου, Μέγιστου, Μικρότερου στοιχείου Εισαγωγή στοιχείου
Διαβάστε περισσότεραΠρογραµµατισµός. Linked Lists
Linked Lists ιαφορές από πίνακες Εύκολη αυξοµείωση στοιχείων Επακριβής χρήση µνήµης ύσκολο random access Περισσότερες απαιτήσεις µνήµης Abstraction Πίνακες: + και - + Γρήγορη προσπέλαση. -- Πολύπλοκη η
Διαβάστε περισσότεραΕΡΓΑΣΤΗΡΙΟ 5 ΣΗΜΕΙΩΣΕΙΣ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2017-2018 ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ ΜΑΘΗΜΑ: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Ουρές ΕΡΓΑΣΤΗΡΙΟ 5 ΣΗΜΕΙΩΣΕΙΣ Μια ουρά αποτελεί μια δομή δεδομένων στη λογική του First-in
Διαβάστε περισσότεραΣυνδεδεμένη Λίστα (Linked List)
Δομές Δεδομένων & Ανάλυση Αλγορίθμων 3ο Εξάμηνο Συνδεδεμένες Λίστες (inked ist) http://aetos.it.teithe.gr/~demos/teaching_gr.html Δημοσθένης Σταμάτης Τμήμα Μηχανικών Πληροφορικής A.T.E.I. ΘΕΣΣΑΛΟΝΙΚΗΣ
Διαβάστε περισσότεραΟι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι:
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Μια δομή δεδομένων στην πληροφορική, συχνά αναπαριστά οντότητες του φυσικού κόσμου στον υπολογιστή. Για την αναπαράσταση αυτή, δημιουργούμε πρώτα ένα αφηρημένο μοντέλο στο οποίο προσδιορίζονται
Διαβάστε περισσότεραΕνότητα 2 Στοίβες Ουρές - Λίστες
Ενότητα 2 Στοίβες Ουρές - Λίστες ΗΥ240 - Παναγιώτα Φατούρου 1 Λίστες Γραµµική λίστα (linear list) είναι ένα σύνολο από n 0 στοιχεία ή κόµβους e 1,..., e n, τα οποία είναι διατεταγµένα µε γραµµική σειρά.
Διαβάστε περισσότεραΔιάλεξη 15: Δομές Δεδομένων IV (Διπλά Συνδεδεμένες Λίστες)
Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Διάλεξη 15: Δομές Δεδομένων IV (Διπλά Συνδεδεμένες Λίστες) Δημήτρης Ζεϊναλιπούρ http://www.cs.ucy.ac.cy/courses/epl232
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Στην άσκηση αυτή θα υλοποιήσετε μια κλάση RandomVector η οποία διαχειρίζεται ένα τυχαίο διάνυσμα ακεραίων το οποίο μπορεί να έχει οποιοδήποτε
Διαβάστε περισσότερα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 Σκελετοί Λύσεων 1. Ο ζητούμενος ΑΤΔ μπορεί να υλοποιηθεί ως εξής: (i) Διαδοχική χορήγηση μνήμης Υποθέτουμε ότι οι λίστες μας έχουν μέγιστο μέγεθος max και χρησιμοποιούμε τη δομή type elements[max];
Διαβάστε περισσότεραυναµική έσµευση Μνήµης (συν.) ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 2 Εφαρµογή
υναµική έσµευση Μνήµης (συν.) Στην ενότητα αυτή θα µελετηθούν: Μια εφαρµογή συνδεδεµένων λιστών ιπλά συνδεδεµένες Λίστες ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 1 Εφαρµογή Ζητούµενο: Πρόγραµµα που παίρνει σαν
Διαβάστε περισσότεραΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων
ΟΝΟΜΑΤΕΠΩΝΥΜΟ: ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ AM: Δοµές Δεδοµένων Πτυχιακή Εξεταστική Ιούλιος 2014 Διδάσκων : Ευάγγελος Μαρκάκης 09.07.2014 ΥΠΟΓΡΑΦΗ ΕΠΟΠΤΗ: Διάρκεια εξέτασης : 2 ώρες
Διαβάστε περισσότεραΦροντιστήριο 4 Σκελετοί Λύσεων
Φροντιστήριο 4 Σκελετοί Λύσεων Άσκηση 1 Υποθέτουμε πως οι λίστες είναι υλοποιημένες χρησιμοποιώντας τις πιο κάτω δομές. typedef struct Node{ type data; struct node *next; node; node *top; list; Υλοποιούμε
Διαβάστε περισσότεραΟυρά Προτεραιότητας (priority queue)
Ουρά Προτεραιότητας (priority queue) Δομή δεδομένων που υποστηρίζει δύο βασικές λειτουργίες : Εισαγωγή στοιχείου με δεδομένο κλειδί. Επιστροφή ενός στοιχείου με μέγιστο (ή ελάχιστο) κλειδί και διαγραφή
Διαβάστε περισσότεραΔιδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ
Διάλεξη 9: Στοίβες:Υλοποίηση & Εφαρμογές Στην ενότητα αυτή θα μελετηθεί η χρήση στοιβών στις εξής εφαρμογές: Υλοποίηση Στοιβών με Δυναμική Δέσμευση Μνήμης Εφαρμογή Στοιβών 1: Αναδρομικές συναρτήσεις Εφαρμογή
Διαβάστε περισσότεραΟυρές Προτεραιότητας: Υπενθύμιση. Σωροί / Αναδρομή / Ταξινόμηση. Υλοποίηση Σωρού. Σωρός (Εισαγωγή) Ορέστης Τελέλης
Ουρές Προτεραιότητας: Υπενθύμιση Σωροί / Αναδρομή / Ταξινόμηση Ορέστης Τελέλης telelis@unipi.gr Τμήμα Ψηφιακών Συστημάτων, Πανεπιστήμιο Πειραιώς (Abstract Data Type) με μεθόδους: Μπορεί να υλοποιηθεί με
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα μέσα σε αντικείμενα Αντικείμενα ως επιστρεφόμενες τιμές Αντικείμενα με πίνακες
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα μέσα σε αντικείμενα Αντικείμενα ως επιστρεφόμενες τιμές Αντικείμενα με πίνακες ANTIKEIMENA MEΣΑ ΣΕ ΑΝΤΙΚΕΙΜΕΝΑ Αντικείμενα μέσα σε αντικείμενα Εκτός
Διαβάστε περισσότεραΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Πίνακες Συµβόλων Κεφάλαιο 12 ( ) Ε. Μαρκάκης Επίκουρος Καθηγητής
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Πίνακες Συµβόλων Κεφάλαιο 12 (12.1-12.4) Ε. Μαρκάκης Επίκουρος Καθηγητής Περίληψη Πίνακες συµβόλων Διεπαφή πίνακα συµβόλων Αναζήτηση µε αριθµοδείκτη Ακολουθιακή αναζήτηση Δυαδική αναζήτηση
Διαβάστε περισσότεραΔιάλεξη 15: Δομές Δεδομένων IV (Διπλά Συνδεδεμένες Λίστες)
Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ132 Αρχές Προγραμματισμού II Διάλεξη 15: Δομές Δεδομένων IV (Διπλά Συνδεδεμένες Λίστες) Δημήτρης Ζεϊναλιπούρ http://www.cs.ucy.ac.cy/courses/epl132 15-1 Περιεχόμενο
Διαβάστε περισσότεραΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Εξωτερική Αναζήτηση και Β-δέντρα Κεφάλαιο 16. Ε. Μαρκάκης Επίκουρος Καθηγητής
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Εξωτερική Αναζήτηση και Β-δέντρα Κεφάλαιο 16 Ε. Μαρκάκης Επίκουρος Καθηγητής Περίληψη Ακολουθιακή πρόσβαση Β-δέντρα Υλοποίηση πίνακα συµβόλων µε Β-δέντρα Αναζήτηση Εισαγωγή Δοµές Δεδοµένων
Διαβάστε περισσότεραΔιδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 10: Στοίβες:Υλοποίηση& Εφαρμογές Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Υλοποίηση Στοιβών με Δυναμική Δέσμευση Μνήμης - Εφαρμογή Στοιβών 1: Αναδρομικές συναρτήσεις - Εφαρμογή
Διαβάστε περισσότερα