c -给定链表中要删除的节点的指针.如何在main函数中传递指向节点的指针?

  • 本文关键字:节点 指针 函数 main 删除 链表 linked-list
  • 更新时间 :
  • 英文 :


假设我有一个列表[10 20 30 40 50 60]我想删除一个数据值为40的节点,我该如何从main()函数传递该节点的指针?

我明白如果我想删除10,我可以简单地传递head,如果我想删除第二个节点,那么我可以传递head->下一步,但是如果列表如此之大,假设我想删除第70个节点怎么办?

通常,无论长度是多少,都必须采用

方法
  • 开始遍历链表节点,从头开始,一个接一个。
  • 到达特定节点,检查数据值

    • 如果匹配,将指针更新到下一个(前一个)节点。
    • 如果没有匹配,移动到下一个节点。
  • 直到到达叶节点

关于传递节点,您可以简单地将指针传递到要释放的节点,并从删除函数中释放内存。在调用删除函数之前,需要进行必要的更改以重新排列列表,而不包含要删除的节点。

写代码,如果你有任何问题,我们很乐意帮助。

必须在被删除的指针之前传递一个指针,前提是它是一个单链表。

例如,c++中的标准单链表std::forward_list有以下方法来删除节点

iterator erase_after(const_iterator position);
iterator erase_after(const_iterator position, const_iterator last);

问题是必须更新被删除节点前面的节点。如果列表是单链表,则节点只有到下一个节点的链接。它们没有到前面节点的链接。

否则,你必须在遍历整个列表的函数中找到要删除的传递指针。

如果我想删除第二个节点,那么我可以传递head->下一步,

如果列表这么大假设我想删除第70个节点

因为函数不知道它是第2个节点还是第70个节点:)

但是如果您在搜索操作后跟踪列表中的位置,则可以使您的工作更轻松。

相关内容

  • 没有找到相关文章

最新更新