在已排序的双向链接列表中插入节点

 永恒多一天_313 发布于 2023-02-13 16:11

我无法弄清楚,为什么我的代码插入到排序的双链表中的某些测试用例失败.请让我知道.我不知道测试用例,它们是系统生成的.

Node* SortedInsert(Node *head,int data)
{
    // Complete this function
    // Do not write the main method.
    Node * temp = (Node*)malloc(sizeof(Node));
    temp->data = data;
    temp->next = NULL;
    temp->prev = NULL;
    if (head == NULL)
    {
        head = temp;
        return head;
    }

    if (temp->data <= head->data)
    {
        temp->next = head;
        head->prev = temp;
        head = temp;
        return head;
    }

    Node *curr = head;
    while (curr->next!=NULL)
    {
        if (temp->data <= curr->data)
        {   
            curr->prev->next = temp;
            temp->prev = curr->prev;
            temp->next = curr;
            curr->prev = temp;
            return head;
        }

        curr = curr->next;
    }

    curr->next = temp;
    temp->prev = curr;
    return head;
}

谢谢

1 个回答
  • 到达最后一个节点后,您应该再次将其数据与新节点进行比较并相应地插入.

        curr->next = temp;
        temp->prev = curr;
        return head;
    }
    

    如果执行到达此部分,则当前curr指向最后一个节点.现在你应该再次比较它的数据,如下所示:

        if (temp->data <= curr->data)
        {   // insert before last node
            curr->prev->next = temp;
            temp->prev = curr->prev;
            temp->next = curr;
            curr->prev = temp;
            return head;
        }
        // else insert at the end.
        curr->next = temp;
        temp->prev = curr;
        return head;
    }
    

    2023-02-13 16:14 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有