我正在尝试将 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/