【问题标题】:optimized code for deleting a node in singly linked list用于删除单链表中节点的优化代码
【发布时间】:2020-10-08 01:01:34
【问题描述】:

这段代码可以用来删除指定位置的节点吗

void del(node *&head,int position)
{
        int jump=0;
        node *temp=head;
        while(jump<position-1)
        {
            temp=temp->next;
            jump++;
        }
        node *copy=temp->next;
        temp->next=temp->next->next;
        delete copy;

还有什么是删除特定位置节点最有效的方法?

【问题讨论】:

  • 这很有效,但缺少错误检查。如果position 大于您的列表大小怎么办?如果是0呢?
  • 当你问,这段代码可以删除节点吗?首先,它是否正常工作或者您是否有任何错误。你告诉我们。
  • 接下来你缺少边缘情况,比如第一个和最后一个元素删除,需要额外注意。
  • 显示的代码存在根本缺陷,无法正常工作。至于“最高效”,您能解释一下“最高效”对您意味着什么吗?
  • 其他人也指出了我要指出的相同缺陷。

标签: c++ linked-list singly-linked-list


【解决方案1】:

这段代码可以用来删除指定位置的节点吗

这在大多数情况下是正确的算法。它不能正确处理位置 0 的删除,因此不能这样使用。

在特定位置删除节点最有效的方法是什么?

比这更有效的是将指向前一个节点的指针作为参数而不是指向头和位置的指针。但是对于给定的输入,您使用的算法是渐近最优的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-11
    • 1970-01-01
    • 2020-02-04
    相关资源
    最近更新 更多