Использование однократно связанный список, я возвращающая множество С, содержащий элементы только в множестве А, а не в множестве B.Почему мой метод распечатывает последний элемент списка, когда его не предполагается?
множество А содержит: 30, 20, элемент2, элемент1, 10, 26
Комплект В содержит: 88, поз. 3, 30, поз. 4, 26, 100
A.complement (B); должен дать результат {20 item2 item1 10},
, но я получаю {20 item2 item1 10 26} и '26' не должен находиться в комплекте. Я не могу понять, что не так, даже после вычеркивания диаграммы списка.
public boolean otherContain(Object obj) { // returns true if object is
// inside singly linked list
Node cur = head.next;
while (cur != null) {
if (cur.object.equals(obj))
return true;
else
cur = cur.next;
}
return false;
}
public Set complement(Set a) {// return set containing elements only in A
// not shared with B
Set c = new Set();
Node curC = c.head;
Node cur = head.next;
while (cur != null) {
if (a.otherContain(cur.object)) {
cur = cur.next;
} else if (!a.otherContain(cur.object)) {
curC.next = cur;
curC = curC.next;
cur = cur.next;
}
}
return c;
}
************* Обновленный метод работы ************************
public Set complement(Set a) {// return set containing elements only in A
// not shared with B
Set c = new Set();
Node newNode = c.head;
Node cur = head.next;
while (cur != null) {
if (a.otherContain(cur.object)) {
cur = cur.next;
} else if (!a.otherContain(cur.object)) {
newNode.next = new Node(cur.object, newNode.next);
cur = cur.next;
}
}
return c;
}
Одиночно связанный набор, это должно быть домашнее задание. Я предлагаю вам использовать ваш отладчик, чтобы помочь вам отладить ваш код. –