【发布时间】:2015-08-03 08:55:36
【问题描述】:
我正在开发一个链表程序,它只允许我循环列表一次,并且我不能将列表的元素复制到另一个数据结构中。
假设列表不为空(至少有一个节点)且最后一个节点的下一个为空。
下面的方法应该是合并两个链表,合并链表的头部应该是两个链表中的最大值。以下值在两个列表之间交替出现。
例如,如果我的输入是:
1 2 4
3 5 6 7 8 9
我的输出是:
3 1 5 2 6 4 7 8 9
我知道如何分配头部,但我不知道如何正确合并列表的其余部分。
这是我的代码:
public class LinkedListNode {
private int value;
private LinkedListNode next;
public LinkedListNode(int value) {
this.value = value;
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
public LinkedListNode getNext() {
return next;
}
public void setNext(LinkedListNode next) {
this.next = next;
}
}
public static LinkedListNode mergeLists (LinkedListNode head1, LinkedListNode head2){
LinkedListNode firstList = head1;
LinkedListNode secondList = head2;
LinkedListNode tmp = new LinkedListNode(0);
LinkedListNode result = head1;
int checkWhichList=0;
while(firstList!=null && secondList!=null){
if (firstList.getValue()<=secondList.getValue()){
result=secondList;
}
if (checkWhichList%2==0){
tmp.setNext(head2.getNext());
checkWhichList++;
}
else
tmp.setNext(head1.getNext());
}
result.setNext(tmp);
return result;
}
【问题讨论】:
-
checkWhichList应该做什么?由于始终是0,因此您将添加head2.getNext(),而不是具有最大值的实际列表 -
@gtgaxiola 对不起,我忘了加一个,修好了!
标签: java oop merge linked-list nodes