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

Σχετικά έγγραφα
HY150a Φροντιστήριο 3 24/11/2017

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

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

Σημειώσεις όγδοης εβδομάδας

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

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

17TimeThis.h function returns reference pointer to same object { return *this; }

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

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

Δομές Δεδομένων και Αλγόριθμοι (Γ εξάμηνο) Τμήμα Μηχανικών Πληροφορικής ΤΕ, ΤΕΙ Ηπείρου. Άσκηση εργαστηρίου #6 (Υλοποίηση δυαδικού δένδρου αναζήτησης)

Προγραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Υπολογιστών με C++

Αρχεία & Ρεύματα ΑΡΧΕΙΑ & ΡΕΥΜΑΤΑ. Γεώργιος Παπαϊωάννου ( ) gepap@aueb.gr

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

Μάθημα 22: Δυαδικά δέντρα (Binary Trees)

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

Διάλεξη 10: Δομές Δεδομένων Ι (Στοίβες & Ουρές)

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

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

ΕΛΛΗΝΙΚΗ ΕΤΑΙΡΕΙΑ ΕΠΙΣΤΗΜΟΝΩΝ ΚΑΙ ΕΠΑΓΓΕΛΜΑΤΙΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΜΕΛΟΣ IFIP, IOI

Προγραμματισμός Υπολογιστών με C++

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

Εντολές εισόδου - εξόδου. Εισαγωγή στη C++

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

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

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

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

Αναφορές, είκτες και Αλφαριθμητικά

Προγραμματισμός Υπολογιστών με C++

i M-1 1. ij f(i, j) N-1. (pixel) 2. M N (x, y) (x, y ) = 256. R(x, y), G(x, y), B(x, y)

Standard Template Library (STL)

POINTERS, AGGREGATION, COMPOSITION

ΑΣΚΗΣΕΙΣ ΓΙΑ ΤΟ ΕΡΓΑΣΤΗΡΙΟ 2

Προγραμματισμός Αναδρομή

Συµβολοσειρές - Strings

Προγραμματισμός Αναδρομή

ΠΡΟΤΥΠΑ. ΠΑΡΑ ΕΙΓΜΑ ηµιουργία πρότυπου στοίβας (stack) και στη συνέχεια δηµιουργία µιας στοίβας σηµείων.

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

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

Κλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( )

Προγραμματισμός Υπολογιστών με C++

Η γλώσσα προγραμματισμού C Συνδεδεμένες Λίστες

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

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

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

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

Ονοματεπώνυμο και ΑΜ: Είχα παραδώσει εργασίες τα προηγούμενα ακαδημαϊκά έτη: ΚΑΛΗ ΕΠΙΤΥΧΙΑ!

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

Χωρική Βάση δεδοµένων Autocad

Streams Input / Output in C++ George Kastrinis

Διάλεξη 13: Δομές Δεδομένων ΙΙ (Ταξινομημένες Λίστες)

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

24ος ΠΑΝΕΛΛΗΝΙΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

Αρχές Προγραμματισμού

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ

Δισδιάστατοι Πίνακες (2D Arrays) Εισαγωγή στη C++

Το πρόγραμμα θα τυπώνει και τους τρεις πίνακες.

Προηγµένα Θέµατα Τεχνολογιών Υλοποίησης Αλγορίθµων

a-shapes στη βιολογία

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

Προγραμματισμός Υπολογιστών με C++ Φύλλο Διαγωνίσματος Ακαδημαϊκό εξάμηνο: Χειμερινό

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

2 η Διάλεξη C++ Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ

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

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

Τίτλος Μαθήματος: Ηλεκτρονικοί Υπολογιστές IΙΙ. Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης

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

ΣΤΟΙΧΕΙΑ ΤΗΣ ΓΛΩΣΣΑΣ C++ Constructors, Destructors, Pointers IO Streams, File Streams

Τίτλος Μαθήματος: Ηλεκτρονικοί Υπολογιστές IΙΙ. Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης

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

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

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

Προγραμματισμός Η/Υ (ΤΛ2007 )

ΑΣΚΗΣΕΙΣ ΓΙΑ ΤΟ ΕΡΓΑΣΤΗΡΙΟ 1

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

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

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

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

Μεταγλωττιστές. Συντακτικός Αναλυτής Κατασκευή Πίνακα Συμβόλων (ΠΣ) Εργαστήριο 7. Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι

Εικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1

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

Προγραμματισμός Υπολογιστών με C++ Φύλλο Διαγωνίσματος Ακαδημαϊκό εξάμηνο: Χειμερινό

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

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

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

Γ7.2 Συμβολοσειρές (Strings) Γ Λυκείου Κατεύθυνσης

ΗΥ-150. Προγραμματισμός

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

Αντικειμενοστραφής Προγραμματισμός

Ενότητα 2: Στοίβες Ουρές - Λίστες Ασκήσεις και Λύσεις

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

ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΤΕΛΙΚΗΣ ΦΑΣΗΣ Οι παρακάτω λύσεις είναι απολύτως ενδεικτικές

ιαφάνειες παρουσίασης #6 (β)

Προγραμματισμός Υπολογιστών με C++

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

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

test.txt #include <iostream> #include <fstream> int main()

Ερώτημα Α 1. Να γράψετε τις εντολές που πραγματοποιούν τα ακόλουθα:

Παίρνοντας Αποφάσεις 1

C: Από τη Θεωρία στην Εφαρμογή

Transcript:

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

Linked List Μια linked list είναι μια ακολουθία από ςυνδεδεμένουσ κόμβουσ Κάθε κόμβοσ περιέχει τουλάχιςτον Μια πληροφορία (ή ένα struct) Δείκτη ςτον επόμενο κόμβο τησ λίςτασ Head : δείκτησ ςτο πρώτο κόμβο Ο τελευταίοσ κόμβοσ δείχνει ςτο null 2

Linked List Linkedlist Node { data // Οι πληροφορίεσ που αποθηκεύουμε ςτον κόμβο next //Αναφορά ςτον επόμενο κόμβο } 3

Οριςμόσ κόμβου typedef struct node { int data; // will store information node *next; // the reference to the next node }; node A data pointer 4

Ειςαγωγή κόμβου ςτην αρχή node *head = NULL; node *temp; //create a temporary node temp = (node*)malloc(sizeof(node)); //allocate space for node --------------------------------------------------------- temp->data = info; // store data(first field) temp->next=head; // store the address of the pointer head(second field) head = temp; // transfer the address of 'temp' to 'head' 5

Ειςαγωγή ςτο τέλοσ node *temp1; // create a temporary node temp1=(node*)malloc(sizeof(node)); // allocate space for node temp1 = head; // transfer the address of 'head' to 'temp1' while(temp1->next!=null) // go to the last node temp1 = temp1->next; //tranfer the address of 'temp1->next' to 'temp1 node *temp; // create a temporary node temp = (node*)malloc(sizeof(node)); // allocate space for node temp->data = info; // store data(first field) temp->next = NULL; // second field will be null(last node) temp1->next = temp; // 'temp' node will be the last node 6

Διάςχιςη Λίςτασ(Print) while( temp1!=null ) { cout<< temp1->data<<" "; // show the data in the linked list temp1 = temp1->next; //tranfer the address of 'temp->next' to 'temp } 7

Διαγραφή ςτην αρχή node *temp; // create a temporary node temp = (node*)malloc(sizeof(node)); // allocate space for node temp = head; // transfer the address of 'head' to 'temp' head = temp->next; // transfer the address of 'temp->next' to 'head free(temp); 8

Διαγραφή ςτο τέλοσ // create a temporary node node *temp1; temp1 = (node*)malloc(sizeof(node)); // allocate space for node temp1 = head; //transfer the address of head to temp1 node *old_temp; // create a temporary node old_temp = (node*)malloc(sizeof(node)); // allocate space for node while(temp1->next!=null) // go to the last node { old_temp =temp1; // transfer the address of 'temp1' to 'old_temp' temp1 = temp1->next; // transfer the address of 'temp1->next' to 'temp1' } old_temp->next = NULL; // previous node of the last node is null free(temp1); 9

Διαγραφή ςυγκεκριμένου κόμβου node *temp1; // create a temporary node temp1 = (node*)malloc(sizeof(node)); // allocate space for node temp1 = head; // transfer the address of 'head' to 'temp1' node *old_temp; // create a temporary node old_temp =(node*)malloc(sizeof(node)); // allocate space for node old_temp = temp1; // transfer the address of 'temp1' to 'old_temp' 10

Συνέχεια cout<<"enter THE NODE NUMBER:"; cin>>node_number; // take location for( int i = 1 ; i < node_number ; i++ ) { old_temp = temp1; // store previous node temp1 = temp1->next; // store current node } old_temp->next = temp1->next; // transfer the address of 'temp1->next' to 'old_temp->next' free(temp1); 11

Sort Linked List node *temp1; // create a temporary node temp1 = (node*)malloc(sizeof(node)); // allocate space for node node *temp2; // create a temporary node temp2 = (node*)malloc(sizeof(node)); // allocate space for node int temp = 0; // store temporary data value for( temp1 = head ; temp1!=null ; temp1 = temp1->next ) { for( temp2 = temp1->next ; temp2!=null ; temp2 = temp2->next ) { if( temp1->data > temp2->data ) { temp = temp1->data; temp1->data = temp2->data; temp2->data = temp; } } } 12

Διάβαςμα αρχείου #include <iostream> #include <fstream> #include <string> using namespace std; int main() { c infile( test.txt ); if (infile.fail()) { cerr << "Unable to open file for reading." << endl; exit(1); } string nexttoken; while (infile >> nexttoken) { cout << "Token: " << nexttoken << endl; } infile.close(); return 0; } 13

int main ( int argc, char *argv[] ) #include <fstream> #include <iostream> using namespace std; int main ( int argc, char *argv[] ) { if ( argc!= 2 ) // argc should be 2 for correct execution // We print argv[0] assuming it is the program name cout<<"usage: "<< argv[0] <<" <filename>\n"; else { // We assume argv[1] is a filename to open ifstream the_file ( argv[1] ); // Always check to see if file opening succeeded if (!the_file.is_open() ) cout<<"could not open file\n"; else { char x; // the_file.get ( x ) returns false if the end of the file // is reached or an error occurs while ( the_file.get ( x ) ) cout<< x; } // the_file is closed implicitly here } } 14

Tέλοσ 15