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

Δομες δεδομένων με c


mike.pf

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

Δημοσ.

Καλησπέρα.Θα ήθελα κάποιος να μου εξηγήσει πώς θα μπορούσα να χρησιμοποιήσω μια δομή δεδομένων την οποία ορίζω με την typedef struct{

{

Μέσα σε μία διαδικασία.Χρειάζεται να χρησιμοποίησω

δείκτες; Kαι αν ναι πως δηλώνω έναν δείκτη ως προς εγγραφή;

Δημοσ.

Έστω η δομή

>typedef struct tree_node{//tree node structure definition.
int cost;
char letter;
struct tree_node *p_left_child, *p_right_child;
}tree_node;

Για να δηλώσουμε έναν δεικτη προς αυτή τη δομή κάνουμε

>tree_node *t_root = NULL;

ή εναλλακτικά

>typedef tree_node *bt_node;
bt_node t_root = NULL;

 

για να περάσουμε μια τέτοια δομή σαν όρισμα σε συνάρτηση, χρησιμοποιουμε τον δείκτη που έχουμε δηλώσει παραπάνω:

>void print_tree(tree_node *t_root);<--πρότυπο συνάρτησης
print_tree(t_root);<---κλήση συνάρτησης

ή κάνοντας χρήση του δεύτερου τρόπου δήλωσης του δείκτη

>void print_tree(bt_node t_root);<--πρότυπο συνάρτησης
print_tree(t_root);<---κλήση συνάρτησης

Δημοσ.
Έστω η δομή

>typedef struct tree_node{//tree node structure definition.
int cost;
char letter;
struct tree_node *p_left_child, *p_right_child;
}tree_node;

Για να δηλώσουμε έναν δεικτη προς αυτή τη δομή κάνουμε

>tree_node *t_root = NULL;

ή εναλλακτικά

>typedef tree_node *bt_node;
bt_node t_root = NULL;

 

για να περάσουμε μια τέτοια δομή σαν όρισμα σε συνάρτηση, χρησιμοποιουμε τον δείκτη που έχουμε δηλώσει παραπάνω:

>void print_tree(tree_node *t_root);<--πρότυπο συνάρτησης
print_tree(t_root);<---κλήση συνάρτησης

ή κάνοντας χρήση του δεύτερου τρόπου δήλωσης του δείκτη

>void print_tree(bt_node t_root);<--πρότυπο συνάρτησης
print_tree(t_root);<---κλήση συνάρτησης

 

Και στις 2 περιπτώσεις η = null χρησιμοποιήται για να δεσμεύσω χώρο στην μνήμη;H απλά για να αρχικοποιήσω την μεταβλητή δείκτη;

Δημοσ.

H null ουσιαστικά σημάνει "ΤΙΠΟΤΑ", άρα πως δεσμεύει κάτι κάτι που σημαίνει τπτ;;; Διάβασε C...

Για να δεσμεύσεις χώρο χρησιμοποιείς την συνάρτηση malloc(ή alloca, calloc)...

Φαίνεται δε γνωρίζεις βασικά πράγματα...κάτσε διάβασε καλύτερα...

Δημοσ.

για την ακριβεια, 99% των περιπτωσεων, το NULL ειναι το 0

 

αν ψαξεις στο include path του compiler σου, θα βρεις σε διαφορα headers το παρακατω

>#define NULL 0

 

αρα, οταν ο λεει

>tree_node *t_root = NULL;

ισοδυναμει με

 

> tree_node *t_root = 0; 

 

που σημαινει σε ανθρωπινη γλωσσα "Δηλωνω μια μεταβλητη που μπορει να αποθηκευσει τη διευθυνση μνημης που θα αποθηκευτει μελλοντικα ενα struct τυπου tree_node. Ακομα δεν εχει δημιουργηθει αυτο το στρακτ, δε ξερω ΠΟΥ θα αποθηκευτει και γιαυτο προς το παρον βαζω ενα μηδενικο"

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

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

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