Προς το περιεχόμενο

Τι ενοεί ο ποιητής?


sgeros

Προτεινόμενες αναρτήσεις

Δημοσ.

Χαίρετε

Διαβάζω Δομές δεδομένων απο κάτι πανάθλιες σημειώσεις και όπως κάθε νέος προγ/στής που σέβεται τον εαυτό του "κολλάω" με τους δείκτες .Το λοιπον έχω το εξής παράδειγμα σε κάποιο σημειο:

 

 

typedef struct

{

int mikos;

char xaraktiras[meg_mikos];

}typos_seiras;

kai

void dimiourgia (typos_seiras *seira)

{ seira ->mikos =0;}

 

Η ερώτηση μου είναι:

Η γραμή :{ seira ->mikos =0;}

τι μας λέει?(όσο αφορα την διεύθηνση μνήμης)

 

Pleaseeee ρίξτε μου μία καλή να ξεκολλίσω!!!

Δημοσ.

Βασικά δεν ξέρω πώς να εκφραστώ χωρίς να πω καμία κοτσάνα. Όταν έχεις έναν pointer σε ένα αντικείμενο τότε προσπελαύνεις τα στοιχεία του χρησιμοποιώντας το ->. Λέει με απλά λόγια βάλε την τιμή 0 στο mikos του αντικειμένου που δείχνει ο pointer.

Δημοσ.

Μετα απο μια ενδελεχή ματια σένα βιβλιό C και ειδικότερα στο κεφάλαιο δομές πιστεύω πος εβγαλα άκρη !(?)

Ευχαριστώ godlike!

Δημοσ.

Για να καταλάβεις λίγο καλύτερα η έκφραση seira ->mikos αντιστοιχεί στην έκφραση (*seira).mikos. Ο τελεστής * αναφέρεται στο περιεχόμενο της διεύθυνσης που δείχνει ο δείκτης seira και μιας και η διεύθυνση αντιστοιχεί σε δομή μπορείς να αναφερθείς σε συγκεκριμένο πεδίο (.mikos)

Δημοσ.

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 :P

Δημοσ.

Συνεχίζοντας λοιπόν το διάβασμα εχω κληθει να γραψω ενα 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--;

}

 

παίδες όποιος με βοηθήσει θα έχει γλυτώσει εναν συνάνθρωπό του απο το να μείνει καραφλός αφού θα αποτρέψει το τράβηγμα των μαλλιών μου!!

Ευχαριστώ

Δημοσ.

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.

Δημοσ.

Λοιπόν ο κώδικας είναι ο εξής:

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)));

}

Δημοσ.

Επίσης να επισυμάνω οτι η διαδρομή τρέχει με ενδοδίαταξη .δηλ αν "Α" ειναι κόμβος πατέρας και "Β"αριστερός κόμβος παιδί και "Γ" αριστερός κόμβος παιδί .Επισκέπτεται τον "Α" μετα τον "Β" και μετα "Γ".

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...