【问题标题】:What does NODE first = first-> link mean in linked list?NODE first = first-> link 在链表中是什么意思?
【发布时间】:2016-10-14 08:50:42
【问题描述】:

我想知道如何将 node* 变量 NODE 分配给结构内的数据?

struct node
{
   int info;
   struct node *link;
};

 typedef struct node* NODE;

//IN SOME OTHER FUNCTION
NODE temp,first;
temp = first;
first = first->link; // I WANT HELP WITH THIS LINE.

【问题讨论】:

  • 您首先指定指向列表中的下一项,无论这在您的实现中意味着什么。首先不能为空
  • malloc 可以是你的朋友……也可以是敌人……
  • 有“教程式”answer here
  • 这意味着有人通过hiding a pointer-type in a typedef alias使您的分析任务变得更加困难
  • first 未初始化,所以first = first->link 错误。

标签: c singly-linked-list


【解决方案1】:

在链表中,您有一个包含一些信息的节点。在每个节点中,您都有下一个节点的地址。

struct node
{
   int info;           //Information or data which is stored at every node
   struct node *link;  // Address of next node 
};

first = first->链接; // 我想帮忙处理这条线。

如果您已完成当前节点,那么您可能需要访问下一个节点。 在这一行中,您访问了链表的下一个节点 (first->link) 并且您将下一个节点设为first(顶部节点)。

【讨论】:

    【解决方案2】:

    first 的类型为 struct node *

    link 也是一个struct node *

    因此您可以将一个分配给另一个,反之亦然。

    在此示例中,first 的原始值存储在另一个变量temp 中,然后first 被替换为原始link 中的link 值。你可以等效地写

    first = temp->link
    

    而不是最后一行,希望这样可以减少混乱。

    【讨论】:

    • 嗯,什么未定义的行为? NODEstruct node*(由 typedef 编写),所以它只是分配给各处指针的指针。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-02
    • 1970-01-01
    • 1970-01-01
    • 2018-06-21
    • 2022-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多