Я пытаюсь объединить два отсортированных LinkedList с помощью TreeSet, так как они уже сортируют его самостоятельно (хотя исключение, которое имеет и связанныйList, не имеет общих элементов). Проблема здесь в том, что в LinkedList добавлен таинственный «0», который я пытаюсь вернуть, которого я не могу установить.Слияние двух отсортированных LinkedList с использованием TreeSet
Node gimmeNode(Node root, TreeSet<Integer> st){
Node temp = root;
Node toPrint = root;
Iterator it = st.iterator();
while(it.hasNext()){
temp.data = (int) it.next();
temp.next = new Node();
temp = temp.next;
}
return root;
}
Node MergeLists(Node headA, Node headB) {
Node root = new Node();
TreeSet<Integer> st = new TreeSet<>();
if(headA==null)
return headB;
else if(headB==null)
return headA;
else{
while(headA != null){
st.add(headA.data);
System.out.println("AddedA : " + headA.data);
headA = headA.next;
}
while(headB != null){
st.add(headB.data);
System.out.println("AddedB : " + headB.data);
headB = headB.next;
}
root = gimmeNode(root, st);
return root;
}
}
Output
AddedA : 1
AddedA : 3
AddedA : 5
AddedA : 6
AddedB : 2
AddedB : 4
AddedB : 7
LinkedList : 1 2 3 4 5 6 7 0
wont it.hasNext() работают только в том случае, если TreeSet имеет в нем элемент? Например, while (node.next! = Null), поэтому он не должен выделять память, если она в конце (поскольку цикл while вообще не выполняется)? –
Да, но в течение последней итерации цикла while - для последнего элемента в наборе - вы устанавливаете 'temp.next = new Node();'. Этот 'новый Node()' является вашим лицом. –
О да спасибо сейчас знаю^_ ^ –