2015-11-06 3 views
-1

tout le monde Helle, je suis coincé dans un problème pour 1 semaine et je viens ici .. Je quelques structures:Comment faire un lien: liste chaînée et pointeur dans c

typedef struct s_task{ 
    unsigned int id; 
    char *name; 
}task 

typedef struct s_element_task{ 
    task *t; 
    struct s_element_task *next_element; 
} element_task; 

typedef element_task* task_list; 

typedef struct s_agenda{ 
    task_list *task_by_date; 
} agenda; 

Je veux ajouter une tâche à l'ordre du jour, mais je ne sais pas comment faire le lien betewwen structures thèses ..

Je commence par:

task* my_task = malloc(sizeof(task)); 

mais c'est tout ..

merci d'avance un

+0

puis créer s_element_task. ajoutez la tâche précédemment créée à s_element_task. – Adi

+0

Est-ce que le seul membre 's_agenda'' task_list * task_by_date' est supposé être 'task_list task_by_date', sans le pointeur supplémentaire, car le pointeur est déjà dans le type de' task_list'? Habituellement, je vous conseille de ne pas cacher les pointeurs derrière les définitions de type, car il obscurcit inutilement. Mais, c'est une opinion, et probablement pas partagée par tout le monde. – MicroVirus

+0

vous écrivez j'ai fait une erreur task_by_date ne pas avoir un pointeur merci je n'ai pas remarqué que dans mon code – maitiko

Répondre

0
task* my_task = malloc(sizeof(task)); // data object 
element_task* my_node = malloc(sizeof(element_task)); // node object 
my_node.t = my_stask; // node now knows where data is 

element_task* next_node = malloc(sizeof(element_task)); // next node object 
my_node.next_element = next_node; // "link" to next node in linked list 

Comme une note de côté, je ferais vous d'initialiser element_task.next_element NULL de sorte que vous pouvez dire si ce nœud a un enfant ou non.

+0

je pense que l'OP voulait aussi spécifiquement savoir comment utiliser l'ordre du jour. Mais voir mon commentaire sur le post de OP pour savoir s'il veut ou non le double pointeur pour 'task_by_date'. – MicroVirus

+0

merci beaucoup, mais je ne sais pas comment faire ce lien pour ajouter cette tâche à task_list. Est-il correct d'écrire: 'agenda * a = malloc (sizeof (agenda);' 'a-> task_by_date = mon_noeud?' – maitiko

+0

task_list est déjà un pointeur, donc dans la définition de l'ordre struct il ne devrait pas être un autre pointeur (c'est actuellement un pointeur vers le pointeur) – personjerry