I stumbled upon a weird problem with adding two linked lists into a third one in Java, the first linked list “myList1”, the second linked list “myList2” and the third one “myList3”.
The combining method is supposed to to add the first LinkedList “myList1” then the second “myList2” into the third LinkedList “myList3”, but I faced a problem with adding them to third list while it’s empty, but if the third list has at least one element every thing goes smoothly.
The code:
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();
}
The node is not added to the third LinkedList if the third list is empty, and I tried many other codes but it didn’t work either, but if I entered at least one element to the third LinkedList the list is added normally.
other codes I tried :
newcurrent.setLink(newNode);
and
newNode = newcurrent;
newcurrent = newNode;
and
newNode.setLink(newcurrent);
newcurrent.setLink(newNode);
and
newNode.link = newcurrent;
newcurrent.link = newNode;
You’re overcomplicating this a bit, I think. The links within the list are already there. You only need to link
myList3.tailtomyList1.head, no need to loop through adding each node independently. Since you don’t look like you are storing atail, you’ll need to iterate to the end ofmyList3to find it.One further note, I find it painful to try to keep track of names like
current,current11,newcurrent, etc. They all mean just about the same thing to my brain. If you’re like me, a bit more descriptive naming might help you keep track of what your variables are meant to be doing here.