【问题标题】:How to make a link : chained list and pointer in c如何建立链接:c中的链表和指针
【发布时间】:2016-02-08 03:18:33
【问题描述】:

大家好,我被一个问题困了 1 周,我来到这里.. 我的结构很少:

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;

我想将任务添加到议程中,但我不知道如何在论文结构之间建立链接..

我开始:

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

但仅此而已..

谢谢你提前

【问题讨论】:

  • 然后创建 s_element_task。将之前创建的任务添加到 s_element_task。
  • s_agenda 的唯一成员task_list *task_by_date 不应该是task_list task_by_date,没有额外的指针,因为指针已经在task_list 的类型中了吗?通常我建议不要将指针隐藏在类型定义后面,因为它不必要地模糊了。但是,这是一种观点,可能并非所有人都同意。
  • 你在写我犯了一个错误 task_by_date 没有指针谢谢我没有在我的代码中注意到这一点

标签: c list pointers structure chained


【解决方案1】:
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,这样您就可以判断该节点是否有子节点。

【讨论】:

  • 我认为 OP 还特别想知道如何使用议程。但是请参阅我对 OP 帖子的评论,了解他是否想要 task_by_date 的双指针。
  • 非常感谢,但我不知道如何创建链接以将此任务添加到 task_list。写成:'agenda *a = malloc(sizeof(agenda);'a->task_by_date = my_node ?
  • task_list 已经是一个指针,所以在议程结构的定义中它不应该是另一个指针(它目前是一个指向指针的指针)
猜你喜欢
  • 2014-03-29
  • 1970-01-01
  • 2011-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多