2015-11-06 45 views
-1

赫勒大家好,我卡中的問題1周,我來到這裏.. 我有幾個結構:如何使一個鏈接:在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; 

我想添加一個任務,一個議程,但我不知道如何使鏈接betewwen論文結構..

我開始:

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

但僅此而已..

謝謝未提前

+0

然後創建s_element_task。將先前創建的任務添加到s_element_task。 – Adi

+0

不是's_agenda'唯一的成員'task_list * task_by_date'應該是'task_list task_by_date',沒有額外的指針,因爲指針已經是'task_list'的類型了嗎?通常我建議不要隱藏類型定義的指針,因爲它不必要地模糊。但是,這是一個意見,可能並不是每個人都能分享的。 – MicroVirus

+0

你寫我犯了一個錯誤task_by_date沒有一個指針,謝謝我沒有注意到,在我的代碼 – maitiko

回答

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 

作爲一個方面說明,我會確保初始化element_task.next_element爲NULL,這樣你就可以告訴節點是否有子女或沒有。

+0

我覺得OP還特意想知道如何使用議程。但是看到我對OP的帖子的評論,他是否想要'task_by_date'的雙指針。 – MicroVirus

+0

非常感謝,但我不知道如何使鏈接將此任務添加到task_list。是否正確寫入:'agenda * a = malloc(sizeof(agenda);' 'a-> task_by_date = my_node?' – maitiko

+0

task_list已經是一個指針了,所以在議程結構的定義中它不應該是另一個指針(它當前是指向指針的指針) – personjerry