Mode Δημοσ. 6 Μαΐου 2007 Δημοσ. 6 Μαΐου 2007 Γεια σε ολους εχω αρχισει να διαβαζω δυαδικα δεντρα αλλα εχω κολλησει σε ενα αλλο σκελος τους δεικτες μεσα σε δομες δεν μπορω να καταλαβω τι συμβαινει παρακατω αναφερονται κομματια κωδικα απο ενα βιβλιο που διαβαζω οποιος θελει ας βοηθησει γιατι τα εχω κανει μανταρα ευχαριστω //struct node { int data; struct node *left; struct node *right; }; struct node *root; struct node *newnode(); struct node *find(); struct node *insert(); void display(); struct node *find_left_most(); struct node *find_right_most(); // σε αυτο το σημειο δεν μπορω να καταλαβω γιατι φτιαχνει την δομη node και βαζει δεικτες στα left και στα right καθως επισης και στα root,newnode() και λοιπα. // struct node *newnode(int num) { struct node *neos; neos=malloc(sizeof(struct node)); neos->data = num; neos->left = NULL; neos->right = NULL; return(neos);// //struct node *insert(int num) { struct node *next,*current,*ptr; int isleft; next=current=root; ptr=newnode(num); if (root == NULL) { return ptr; } while(1) { if(num < current->data) { next = current->left; isleft=1; } else { next = current->right; isleft=0; } if(next == NULL) { if(isleft) current->left=ptr; else current->right=ptr; return ptr; } current=next; } }// εδω γιατι βαζει δεικτες στις μεταβλητες current,next και prt??? παραλληλα σε καποιο σημειο αναφερει το εξης:current-->data, current-->left current-->right που τα βρήκε αφου τα μονα που υπαρχουν ειναι στην συναρτηση newnode() με ονοματα :neos--->data, neos--->left, neos---right ??? Υ.Γ.:εννοειται οτι ξερω τι σημαινει οτι πχ το neos-->data=num οτι παει να πει εκχωρησε στην μεταβλητη data του neos την τιμη της μεταβλητης num Συγνωμη αν εγινα κουραστικος αν και ειναι το πρωτο post που κανω και παρακαλω οποιος γνωρίζει και θέλει ας βοηθησει Ευχαριστω εκ των προτερων Mode
kickeras Δημοσ. 6 Μαΐου 2007 Δημοσ. 6 Μαΐου 2007 σε αυτο το σημειο δεν μπορω να καταλαβω γιατι φτιαχνει την δομη node και βαζει δεικτες στα left και στα right καθως επισης και στα root,newnode() και λοιπα. ---------* node -------/--------\ ------/----------\ ----*l1----------*r1 ----/--\----------/--\ ---/----\--------/----\ *l2-----*r2----*l3----*r3 dioti kathe kainourgio node opws vlepeis kai sto struct node periexei tis eksis plirofories....to data (safti tin periptwsi ena integer) kai 2 pointers sti mnimi i opoia periexei plirofories gia ta deksia kai aristera sub-nodes. kathe fora pou dimiourgeis ena kainourgio node (mesw tou finction newnode()) prepei na dineis plirofories (arxika NULL) gia ta nodes sta opoia tha prepei na deixnoun oi pointers. p.x. to *node exei left kai right nodes ta l1,r1 kai parent null...to l1 exei left kai right nodes l2 kai r2 kai parent to l1, etc. etsi tha mporeis na perirefersai mesa sto binary tree. εδω γιατι βαζει δεικτες στις μεταβλητες current,next και prt??? Oi pointers sta nodes current, next (ta opoia arxika deixnoun sto node root) xrisimopoiountai wste simfwna me tis sinthikes parakatw o pointer tou current node mporei na xrisimopoiithei wste na deixnei to node to opoio kaneis traverse ekeini ti stigmi kai o pointer tou next na deixnei to epomeno. Arxika prepei na theseis pointers sto current kai meta na thesei pointers sta paidia tou. παραλληλα σε καποιο σημειο αναφερει το εξης:current-->data,current-->left current-->right που τα βρήκε αφου τα μονα που υπαρχουν ειναι στην συναρτηση newnode() με ονοματα :neos--->data, neos--->left, neos---right ??? prwton den exei kalesei ti sinartisi newnode gia to current (dioti arxika einai to root) ara akoma kai kei den katalavainw pws mperdeftikes....kai defteron i sinartisi newnode xrisimopoiei to neos wste na kanei allocate mnimi se ena kainourgio node kai meta epistrefei ti diefthinsi tou...p.x. estw exeis ena node* test = NULL...test = newnode()...tote tha dimiourgithei to node neos kai i diefthinsi tou tha epistrafei kai tha antikatastisei tin invalid diefthinsi tou test me ti diefthinsi tou neos. to neos de to xrisimipoioeis pouthena meta...
Mode Δημοσ. 6 Μαΐου 2007 Μέλος Δημοσ. 6 Μαΐου 2007 Σε ευχαριστω πολυ για τις επεξηγησεις σου kickeras ειναι πολυ απλες και κατανοητες και απλα για να ξερουν και οι άλλοι που θα διαβασουν το post αυτο ο καθηγητης που μας κανει το μαθημα το κανει με εναν πως να το πω μπακαλικο τροπο και αναγκαστικα διαβαζω με βιβλιο (εννοειται μονος μου) και αποριες ποσταρω εδω
kickeras Δημοσ. 6 Μαΐου 2007 Δημοσ. 6 Μαΐου 2007 mou pire ligaki na katalavw ti zitas logw twn ellinikwn orologiwn (deiktes, domes, diadika dentra....pragmatika den katalavainw ton logo. as iparxoune na kseroume poies einai alla na didaskontai sta agglika). katalavainw ti ennoeis....oi kathigites sinithws i den to katalavainoun afto pou didaskoune (kai to xoun voutiksei apo allou) i ksexnoun oti o tropos pou to lene den einai katanoitos se atoma me ligoteri empeiria sto thema...me to pou mpeis sti logiki twn pointers tha sou fanoun ola pio efkola...oti xreiasteis postare edw. kali tixi.
Mode Δημοσ. 6 Μαΐου 2007 Μέλος Δημοσ. 6 Μαΐου 2007 ευχαριστω kickeras απλα ενω καταλαβαινω την απλη λογικη των δεικτων δεν ειμαι πολυ εξοικειωμενος ακομα με δεικτες μεσα σε δομες και ισως για αυτο κολλαω οσο για τον καθηγητη θα σου πω κατι πολυ απλο μας εκανε την δυαδικη αναζητηση χρησιμοποιώντας μονο μια κεφαλιδα(file .h) το οποίο ειναι το #include <stdio.h> και χρησιμοποίησε την malloc() χωρις να χρησιμοποιήσει την αντιστοιχη κεφαλίδα #include <malloc.h> φαντασου δηλαδη ποσο μπακάλης ειναι στην δουλεια του
kickeras Δημοσ. 7 Μαΐου 2007 Δημοσ. 7 Μαΐου 2007 to provlima me tous akadimaikous einai oti enw (sinithws ) katalavainoune ti lene den exoune empeiria panw ston programmatismo. ta xoune diavasei diladi alla den exoune kathisei katw na ta koitaksoune. einai to path pou dialegei o kathenas. katse paikse me tous pointers kai sto telos tha deis oti einai aploi san concept, xrisimoi kai arketa epikindinoi an den ksereis ti akrivws kaneis ....skepsou tous san apla tetrampita pragmatakia (oxi panta!) pou periexoun mia defthinsi mnimis...eite twra apo einai mesa se struct, i monoi tous san kotopoula stin ethniki den exei kamia apolitws diafora. opws exeis to int etsi mporeis na exeis kai to int*.
Mode Δημοσ. 7 Μαΐου 2007 Μέλος Δημοσ. 7 Μαΐου 2007 τελικα εχω αρχισει και καταλαβαινω τον κωδικα καλυτερα θελω να μου πεις αν εχω δικιο στο εξης: ο κωδικας για τον εναν κομβο ειναι : |------------------| |--δεδομενα-------| |-*left---*right----|---------------> και αυτο ειναι ενας κομβος??? |------------------| Σωστα το καταλαβα ???? oπου *left δειχνει στον αριστερο κομβο ο οποιος παλι περιεχει τον παραπανω κωδικα και *right οπου δειχνει στον δεξιο κομβο ο οποιος παλι περιεχει τον παραπανω κωδικα και ουσιαστικουν δειχνουν τα δεδομενα τους δηλαδη τα δεδομενα του αριστερου και τα δεδομενα του δεξιου κομβου αντιστοιχα Σωστος και σε αυτο??
kickeras Δημοσ. 7 Μαΐου 2007 Δημοσ. 7 Μαΐου 2007 komvos = node ipothetw e? den katalavainw ti akrivws ennoeis legontas "periexei ton parapanw kwdika". pantws nai kathe instantiation tou node periexei ola ta members apo to struct node....safti ti periptwsi to data kai pointers sto deksi kai aristero tou sub-node....an oi pointers aftoi einai NULL tote eisai sto xamilotero level.
Mode Δημοσ. 8 Μαΐου 2007 Μέλος Δημοσ. 8 Μαΐου 2007 ναι kickeras κομβος(komvos) ειναι στα αγγλικα η λεξη node εννοώντας περιεχει τον παραπανω κωδικα στην ουσια λεω οτι ο δεικτης(pointer) *left και *right αντιστοιχα δειχνουν κομβους δηλαδη λεω οτι -----------*left--------------------------*right-------------------------- ----------- | ---------------------------- |---------------------------- ----------- | -----------------------------|---------------------------- |------------------| ------------------|------------------| |--δεδομενα-------| ------------------|--δεδομενα-------| |-*left---*right----| -------------------|-*left---*right----| |------------------| ------------------|------------------|
kickeras Δημοσ. 8 Μαΐου 2007 Δημοσ. 8 Μαΐου 2007 ---------* node-------/--------\ ------/----------\ ----*l1----------*r1 ----/--\----------/--\ ---/----\--------/----\ *l2-----*r2----*l3----*r3 nai...diladi afto akrivws pou sou eipa edw!
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.