【问题标题】:Delete a node without head pointer删除没有头指针的节点
【发布时间】:2021-01-15 17:36:37
【问题描述】:

我读到可以从链表中删除一个没有给出头指针的节点,前提是它不是最后一个链表。 cpp代码如下,

Node *r=node->next;
node->data=r->data;
node->next=r->next;
free(r);

我读到这段代码不能用来删除最后一个链表,我们需要加上额外的条件。我不明白为什么?

【问题讨论】:

  • 如果node 是最后一项会怎样?想想r 会有什么价值,当你访问r->datar->next 时会发生什么。
  • 什么是“cpp”代码?
  • 获取tour,阅读How to Ask并发布minimal reproducible example

标签: c pointers linked-list nodes


【解决方案1】:

+你的链表指针返回了吗? +您设置了C 标签,但您谈论cpp。

考虑为我们提供这 4 行代码。

这段代码不能用于删除最后一个节点的原因是因为你首先需要通过爬取你的下一个指针直到你找到NULL来获取最后一个节点的地址。 (用这样的东西:)

    while(ptr->next != NULL)
        ptr = ptr->next;

在此 ptr 之后将等于您的最后一个节点地址。有了这个地址,你可以做任何你想做的事。

示例:如果您保存头节点,您可以将最后一个作为第一个 ,您甚至可以删除最后一个节点..etc

使用您发送的代码,您只需将第二个列表的数据复制到第一个列表中

【讨论】:

    猜你喜欢
    • 2021-05-01
    • 1970-01-01
    • 2012-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-18
    • 1970-01-01
    • 2018-04-07
    相关资源
    最近更新 更多