Lowlevel

Lowlevel => Softwareentwicklung => Thema gestartet von: DerHartmut am 26. August 2010, 10:55

Titel: Verkette Listen mit verketteten Listen mit verketteten Listen
Beitrag von: DerHartmut am 26. August 2010, 10:55
Hallo zusammen,

ich habe folgendes Problem, bei welchem ich partout keine Lösung finde (wahrscheinlich, weil ich mich zu sehr hereingedacht habe):

Folgenden Code habe ich geschrieben:

typedef struct driver_node
{
    struct driver_node *prev_driver;
    struct driver_node *next_driver;
};

typedef struct device_node
{
    struct driver_node *drivers;

    struct device_node *prev_device;
    struct device_node *next_device;
};

typedef struct super_node
{
   struct device_node *devices;
};

Soweit, so gut.

Wie initialisiere ich nun alle Elemente der verketteten Liste?
Ich bin der Meinung, mit

struct super_node *mynode = (struct *super_node)malloc(sizeof(struct super_node));

ist es nicht getan. Oder doch? Sind dann alle Unterketten initialisiert? Müssen die über die Struct seperat allokiert werden? Oder mache ich hier generell grobe Denkfehler und das Design an sich ist Mist?

Titel: Re:Verkette Listen mit verketteten Listen mit verketteten Listen
Beitrag von: kevin am 26. August 2010, 11:03
Eine leere Liste heißt wohl, dass super_node->devices == NULL ist. Insofern fehlt dir eigentlich nur die Initialisierung dieser einen struct. Wenn man den überflüssugen Cast weglässt, also:
struct super_node* my_node = calloc(1, sizeof(*my_node));