sgeros Δημοσ. 7 Δεκεμβρίου 2005 Δημοσ. 7 Δεκεμβρίου 2005 Χαίρετε Διαβάζω Δομές δεδομένων απο κάτι πανάθλιες σημειώσεις και όπως κάθε νέος προγ/στής που σέβεται τον εαυτό του "κολλάω" με τους δείκτες .Το λοιπον έχω το εξής παράδειγμα σε κάποιο σημειο: typedef struct { int mikos; char xaraktiras[meg_mikos]; }typos_seiras; kai void dimiourgia (typos_seiras *seira) { seira ->mikos =0;} Η ερώτηση μου είναι: Η γραμή :{ seira ->mikos =0;} τι μας λέει?(όσο αφορα την διεύθηνση μνήμης) Pleaseeee ρίξτε μου μία καλή να ξεκολλίσω!!!
godlike Δημοσ. 7 Δεκεμβρίου 2005 Δημοσ. 7 Δεκεμβρίου 2005 Βασικά δεν ξέρω πώς να εκφραστώ χωρίς να πω καμία κοτσάνα. Όταν έχεις έναν pointer σε ένα αντικείμενο τότε προσπελαύνεις τα στοιχεία του χρησιμοποιώντας το ->. Λέει με απλά λόγια βάλε την τιμή 0 στο mikos του αντικειμένου που δείχνει ο pointer.
sgeros Δημοσ. 7 Δεκεμβρίου 2005 Μέλος Δημοσ. 7 Δεκεμβρίου 2005 Μετα απο μια ενδελεχή ματια σένα βιβλιό C και ειδικότερα στο κεφάλαιο δομές πιστεύω πος εβγαλα άκρη !(?) Ευχαριστώ godlike!
sanidas Δημοσ. 8 Δεκεμβρίου 2005 Δημοσ. 8 Δεκεμβρίου 2005 Για να καταλάβεις λίγο καλύτερα η έκφραση seira ->mikos αντιστοιχεί στην έκφραση (*seira).mikos. Ο τελεστής * αναφέρεται στο περιεχόμενο της διεύθυνσης που δείχνει ο δείκτης seira και μιας και η διεύθυνση αντιστοιχεί σε δομή μπορείς να αναφερθείς σε συγκεκριμένο πεδίο (.mikos)
Mystirios Δημοσ. 12 Δεκεμβρίου 2005 Δημοσ. 12 Δεκεμβρίου 2005 An thes na katalabeis pointers asxolisoy me c. Sth pascal pointer exw xrhsimopoihsei mono gia na ftiaxw syndedemenh lista. Sth C/C++ ginetai ths kar****** apo pointers giati einai apisteyta xrhsimoi int **kati; kati=(int **)malloc(10*sizeof(int *)); for(i=0;i<10;i++) kati=(int *)malloc(10*sizeof(int)); etsi gia pozeria
sgeros Δημοσ. 16 Δεκεμβρίου 2005 Μέλος Δημοσ. 16 Δεκεμβρίου 2005 Συνεχίζοντας λοιπόν το διάβασμα εχω κληθει να γραψω ενα prg το οποι διατρεχει ενα δυαδικό δέντρο και τυπώνει τα δεδομένα τών κόμβων του .Αν και ο κώδικας εναι πολύς και κακογραμμένος εχω βγάλει άκρη και αφού εχω γραψέι ενα κιλό κώδικα λιγο το μοναδικό λάθος ειναι το εξής και εμφανίζεται στο εξής τμήμα κώδικα... error:77 c:\docume~1\ego\bca3~1\c\endodi~1.cpp cannot convert `stoiva->Stack::pin[stoiva->Stack::korifi]' from type `Node' to type `Node *' και οκώδικας είναι : void exagogi(Stack *stoiva,npointer *trexon) { if(keni(*stoiva)) printf("H stiva einai adeia"); else { *trexon=stoiva->pin[stoiva->korifi]; stoiva->korifi--; } παίδες όποιος με βοηθήσει θα έχει γλυτώσει εναν συνάνθρωπό του απο το να μείνει καραφλός αφού θα αποτρέψει το τράβηγμα των μαλλιών μου!! Ευχαριστώ
Mystirios Δημοσ. 17 Δεκεμβρίου 2005 Δημοσ. 17 Δεκεμβρίου 2005 leipei polys kodikas... an kaneis to *trexon sketon trexon mporei kati na ginei... einai sa na kaneis more or less to exhs : int a; int *b; a=b; bazeis sto a mia dieythinsi de kobw to kefali moy alla kati tetoio paizei.
godlike Δημοσ. 17 Δεκεμβρίου 2005 Δημοσ. 17 Δεκεμβρίου 2005 Gia na katatopistoume perisotero pes mas ti typou einai to "pin" kai to "korifi"
sgeros Δημοσ. 17 Δεκεμβρίου 2005 Μέλος Δημοσ. 17 Δεκεμβρίου 2005 Λοιπόν ο κώδικας είναι ο εξής: typedef struct Node *npointer; typedef struct Node{ char dedomena; npointer apaidi,dpaidi; }Node; typedef Node pinakas[plithos]; typedef struct{ int korifi; pinakas pin; } Stack; typedef npointer riza; void dimiourgia_dentro(npointer *riza); int keno_dentro(npointer riza); npointer aristero_paidi(npointer p); npointer dexi_paidi(npointer p); void endodiataksi(npointer riza); void dimiourgia(Stack *stoiva); int keni(Stack stoiva); void exagogi(Stack *stoiva,npointer *trexon); void othisi (Stack *stoiva,npointer trexon); void episkepsi(npointer trexon); struct Node A,B,C,D,E,F,G; int main() { static struct Node A ={'A',&B,&C}; static struct Node B ={'B',&D,&E}; static struct Node C ={'C',NULL,NULL}; static struct Node D ={'D',NULL,NULL}; static struct Node E ={'E',&F,NULL} ; static struct Node F ={'F',&G,NULL}; static struct Node G ={'G',NULL,NULL}; } void dimiourgia_dentro(npointer *riza) { *riza =NULL;} int keno_dentro(npointer riza) {return (riza==NULL);} npointer aristero_paidi(npointer p) {if(!keno_dentro(p)) return (p->apaidi); else return NULL;} npointer dexi_paidi(npointer p) {if(!keno_dentro(p)) return (p->dpaidi); else return NULL;} void dimiourgia(Stack *stoiva) {stoiva->korifi=-1;} int keni(Stack stoiva) { return(stoiva.korifi==-1);} void othisi(Stack *stoiva,npointer trexon) { if(stoiva->korifi==plithos-1) printf("H stoiva einai gemati"); else { stoiva->korifi++; stoiva->pin[stoiva->korifi]=*trexon; } } void exagogi(Stack *stoiva,npointer *trexon) { if(keni(*stoiva)) printf("H stiva einai adeia"); else { *trexon=stoiva->pin[stoiva->korifi]; stoiva->korifi--; } } void episkepsi (npointer trexon) {printf("%c\n",trexon->dedomena);} void endodiataksi(npointer riza) {Stack stoiva; npointer trexon; dimiourgia(&stoiva); trexon=riza; do { while(!keno_dentro(trexon)) {othisi(&stoiva,trexon); trexon=aristero_paidi(trexon);} if(!keni(stoiva)) { exagogi(&stoiva,&trexon); trexon=dexi_paidi(trexon); } } while(!!keni(stoiva) || (!keno_dentro(trexon))); }
sgeros Δημοσ. 17 Δεκεμβρίου 2005 Μέλος Δημοσ. 17 Δεκεμβρίου 2005 Επίσης να επισυμάνω οτι η διαδρομή τρέχει με ενδοδίαταξη .δηλ αν "Α" ειναι κόμβος πατέρας και "Β"αριστερός κόμβος παιδί και "Γ" αριστερός κόμβος παιδί .Επισκέπτεται τον "Α" μετα τον "Β" και μετα "Γ".
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.