我无法一起掌握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)