【发布时间】:2013-01-10 21:37:29
【问题描述】:
我偶然发现了一个奇怪的问题,即在 Java 中将两个链表添加到第三个链表中,第一个链表“myList1”,第二个链表“myList2”,第三个链表“myList3”。
组合方法应该将第一个 LinkedList“myList1”然后第二个“myList2”添加到第三个 LinkedList“myList3”中,但是当第三个列表为空时,我遇到了将它们添加到第三个列表的问题,但是如果第三个list 至少有一个元素,一切顺利。
代码:
Node current = myList1.head;
while (current != null) {
Node newcurrent = myList3.head;
int h1 = current.getData();
Node newNode = new Node(h1);
if (newcurrent == null)
//the problem is with this code
newcurrent = newNode;
else {
if (newcurrent.getLink() == null) {
newNode.setLink(newcurrent.getLink());
newcurrent.setLink(newNode);
} else {
Node current11 = newcurrent;
while (current11.getLink() != null) {
current11 = current11.getLink();
}
current11.setLink(newNode);
}
}
current = current.getLink();
}
如果第三个列表为空,则不会将节点添加到第三个 LinkedList,并且我尝试了许多其他代码但它也不起作用,但是如果我在第三个 LinkedList 中输入了至少一个元素,则列表会正常添加.
我尝试过的其他代码:
newcurrent.setLink(newNode);
和
newNode = newcurrent;
newcurrent = newNode;
和
newNode.setLink(newcurrent);
newcurrent.setLink(newNode);
和
newNode.link = newcurrent;
newcurrent.link = newNode;
【问题讨论】:
-
从您的代码中删除空白行。
-
如果你正确缩进你的代码,它会更容易跟踪、维护和调试。
-
感谢编辑代码,很抱歉,这是我第一次使用这个网站
-
为了减少一些复杂性,您可以考虑编写一种方法,将一个列表中的所有元素插入另一个列表。换句话说,如果需要,您一次只能处理两个列表,而不是三个。 IMO,这将使您的代码调试更简单。
-
@BasilBasaif private void InsertElements(LinkedList listSrc, LinkedList listDes){ //将元素从listSrc添加到listDes的代码 } 这就是你要找的吗?
标签: java linked-list nodes