链接列表基础知识中的混乱



我正在浏览链表,我感到困惑。 也许我正在混合概念或其他东西。下面是创建标头节点的代码。

struct node
{
   int data;
   struct node *link;
};
node *head;
void main()
{
   head = new node;
}

1(我想知道的第一件事是我们如何在同一个节点结构中编写struct node *link;?因为首先使用节点结构创建,然后我们可以声明它的指针。
2(node *head;已经声明了一个大小节点的内存,那么我们需要再做一次head = new node;

自引用结构可以保存指向自身的指针。请不要将指针的大小与结构的大小混淆。无论数据类型如何,指针的大小都是恒定的。

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

如果它struct node *link是像struct node link一样的东西,它不会像你想象的那样编译。

关于为什么需要使用new进行分配,当我们做node *head时,它说head指向实际节点的内存位置,具有datalink的区域。

再次阅读pointer概念可能会有所帮助

链接列表是对象链。 您在这里要做的是创建一个具有两个变量的结构。 一个是要存储在此节点中的日期。 另一个是递归结构。 链接列表在这里获得其名称。 一个结构链接到下一个结构。 创建此节点时,link 没有值,但您可以通过创建新节点并将其存储在 link 中来添加节点。

至于你的其余代码,我认为你做得不对。 通常,节点包装在链接列表类中,以便您可以通过添加、删除和搜索节点来控制链接列表。控制链接列表时,至少需要两个指针。 一个指向列表中的第一个节点(也称为"头"(。 第二个指针是搜索指针,它将从头部开始,逐个节点进行,直到找到要查找的内容。

现在回答你的第二个问题,当你写node* head你只是在声明指针。 您没有声明"大小节点的内存",因此在链接列表的初始化函数中,您需要创建第一个节点并将头指向它head = new node;

相关内容

  • 没有找到相关文章

最新更新