小编use*_*478的帖子

在C中创建和理解结构的链接列表

我无法一起掌握struct链接列表数据结构的概念.例如,假设我们有这样的代码:a struct具有worker的内容和这些结构的链表,其中包含每个worker的节点和指向下一个节点的指针(?).

    typedef struct Schedule {
        char name[10];
        char description[10];
        int hours;
        int workordernum;
    } Work;

    typedef struct linkedlist {
        struct Schedule work;
        struct linkedlist *next;
    } Node;
Run Code Online (Sandbox Code Playgroud)

问题是如何创建一个始终在列表开头添加节点的方法,一种使用用户定义将其添加到列表中任何位置(中间)workordernum的方法,以及始终将其添加到最后的方法.

我不是很了解->*正确使用.我确实在网上阅读了有关创建头尾节点的信息,但我没有正确使用它,因为它们有struct一个列表和struct一个节点.

我没有得到的另一件事是,假设在列表的开头添加一个节点,你如何改变workordernum以前所有节点的每一个值呢?

我理解每次添加,删除或移动节点时都必须跟踪,这意味着每次调用这些方法时,我们必须有一个跟踪数字的变量.所以,如果我们在列表中的所有准备的一个节点,其顺序将是一个,我们再加入一个又一个开始,我们将如何改变顺序编号为1至2和一个被添加到1?

或者如果我们只有一个指针,node-> next-> next-> next怎么工作?然后我们将如何打印所有这些?因为我们不能使用for循环.

所以这些是我无法理解代码的概念.如果你花时间解释它,而不是仅仅给出代码,如果可能的话,我会非常感激.因为我必须应用我学到的东西来移动并删除节点.我想自己学习.如果必须作为代码示例提供某些内容,那就没问题,但请不要为我发布所有答案代码.

-谢谢

*请原谅任何格式错误,因为我是这个网站的新手.

编辑:我确实理解指针是一个地址,并且->属于"指向"成员.我的意思是我理解所有基础知识,但我的理解不够坚定,否则我可以做我需要帮助的事情.

编辑2:我将尝试使用我目前学到的链接列表创建一个头节点.我将使用上面的结构,它将是松散的代码,而不是完美的.这只是为了确保我到目前为止在正确的轨道上.

int main() {

   // creates a work struct to hold user content
   Work *workstruct = (Work*)malloc((sizeof(struct Schedule));

   // …
Run Code Online (Sandbox Code Playgroud)

c struct pointers linked-list list

5
推荐指数
1
解决办法
2万
查看次数

标签 统计

c ×1

linked-list ×1

list ×1

pointers ×1

struct ×1