Question

This question already has an answer here:

Is it posible to define a structure with a pointer to that type of structure? What I mean is:

typedef struct {
    char* name;
    node* parent;
} node;

As far as I tried or read, I don't know how to do this or if it's even possible.

Was it helpful?

Solution

Yes, but you have to name the structure, so that you can refer to it.

typedef struct node_ {
    char* name;
    struct node_ * parent;
} node;

The name node only becomes declared after the structure is fully defined.

OTHER TIPS

You can use an incomplete type in the typedef:

typedef struct node node;

struct node {
  char *name;
  node *parent;
};

I agree... and trees. You don't have to look at it like "the egg and the chiken" because defining a type always occurs before instantiating one. So having a member variable of the same type of the object is just tricky when you begin to mix the two in your head!

Yes this is possible.

This is how linked lists are made!

Why don't you try it? You have to put a name to the structure, and yes, this is the way in that recursive data structures works.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top