2016-04-23 14 views
0

Meine Frage ist, wie würde ich auf die Num-Variable in einer Node-Struktur einer List-Struktur zugreifen? Ich habe es auf zwei Arten versucht und beide haben nicht funktioniert? Ich bin nur neugierig, warum das so ist. Danke an jeden, der mir hilft, zu wissen, dass dies eine Anfängerfrage ist. Ich bin ziemlich neu zu c und Stack Überlauf, hoffentlich kann ich viel von dieser Website lernen.verschachtelte Strukturen/verknüpfte Listen in c

#include<stdio.h> 
#include<stdlib.h> 

typedef struct node 
{ 
    int num; 
    struct node *next; 
} node; 

typedef struct list 
{ 
    node *ptr; 
    struct list *next; 
} list; 

int main() 
{ 
    list *p = malloc(sizeof(list)); 
    //p->ptr->num = 5; 

    node *x; 
    x = p->ptr; 
    //x->num = 5; 

    return 0; 
} 
+2

Eine Liste enthält keine Zeiger auf Knoten, bis Sie sie hinzufügen. Sie müssten einen 'node' für' x' zuweisen, auf den verwiesen wird, und dann 'p', um auf den Knoten zu zeigen. Nur dann können Sie auf den Wert zugreifen. Also ist 'p-> ptr = x;' plausibler als die umgekehrte Zuweisung, aber Sie müssen immer noch alle Punkte verbinden. –

Antwort

1

Was Sie versuchen, richtig zu tun, aber das Problem ist, dass, obwohl Sie list für Speicher zugewiesen haben, wird kein Speicher für die Innen list Wohnsitz node zugeordnet.

list *p = malloc(sizeof(list)); 
    //p->ptr->num = 5; 
    node *x; 
    p->ptr = malloc(sizeof(node)); 
    x = p->ptr; 
    x->num = 5; 
Verwandte Themen