java - 交换两个链表条目

标签 java linked-list swap

我正在尝试将 2 个数字插入到链接列表中。该列表必须是有序的,因此较小的数字必须插入到较大的数字之前。

列表首先添加较大的数字,然后在插入第二个较小的数字时,必须将较大的数字与较小的数字交换。

我创建这个方法就是为了做到这一点,这段代码中的问题是它首先添加较大的数字,然后添加较小的数字,然后再次添加较大的数字。

我做错了什么?

public void insertFirst(int id, double dd)
{         
    if (isEmpty())
    {
        Link newLink = new Link(id, dd);
        newLink.next = first;
        first = newLink;
    }
    else
    {
        if (first.iData < id)
        {
            Link newLink = new Link(id, dd);
            newLink.next = first;
            first = newLink;
        }
        else
        {
            int iTempData = first.iData;
            double dTempData = first.dData;

            Link newLink = new Link(id, dd);
            newLink.next = first;
            first = newLink;

            Link newLink2 = new Link(iTempData, dTempData);
            newLink2.next = first;
            first = newLink2;
        }
    }
}

最佳答案

快速修复是

public void insertFirst(int id, double dd)
{         
    if (isEmpty())
    {
        Link newLink = new Link(id, dd);
        newLink.next = first;
        first = newLink;
    }
    else
    {
        if (first.iData < id)
        {
            Link newLink = new Link(id, dd);
            newLink.next = first;
            first = newLink;
        }
        else
        {
            int iTempData = first.iData;
            double dTempData = first.dData;

            first.iData = id; // replace first
            first.dData = dd; // (do not add new)

            Link newLink2 = new Link(iTempData, dTempData);
            newLink2.next = first;
            first = newLink2;
        }
    }
}

请注意,此函数实际上并不维护列表的排序 - 它可以将新项目添加为第一个或第二个,但如果传递的 ID 大于列表中已有的所有(例如十个)项目怎么办?

关于java - 交换两个链表条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12970133/

相关文章:

java - 如何按接收顺序从多个请求获取 http 响应

java - 如果父项目中存在更新版本的 Maven 依赖项,如何排除它

c - 在函数中交换两个数组的指针

java - Spring看不到我导入的类

java - 将整数列表转换为 int 数组

c - 段错误: 11 for my dynamic linked list

c - 删除链表尾部的节点 C

c++ - 在 C++ 中的链表末尾插入一个节点 (walter/savitch)

python - 在同一 Pandas 数据框中交换行

memory-management - 如何更改 Linux 内核交换守护进程 (kswapd) 超时?