#java #data-structures
#java #структуры данных
Вопрос:
Я только что написал программу, которая добавляет два полиномиальных связанных списка. мой вывод печатает только первый член полиномов.
Я не могу понять, в чем ошибка. Я хочу получить некоторую помощь здесь. может кто-нибудь сказать, что не так с моим кодом.
public void addNode(int cof, int exp) {
PNode node = new PNode(cof, exp);
if (first == null) {
first = last = node;
return;
}
last.next = node;
last = node;
}
public PolynomialLinkedList add(PolynomialLinkedList s) {
PolynomialLinkedList sum = new PolynomialLinkedList();
//implement this method
PNode list1 = first;
PNode list2 = s.first;
while (list1 != null amp;amp; list2 != null) {
if (list1.exp == list2.exp) {
sum.addNode(list1.coe list2.coe, list1.exp);
list1 = list1.next;
list2 = list2.next;
} else if (list1.exp > list2.exp) {
sum.addNode(list1.coe, list1.exp);
list1 = list1.next;
} else if (list2.exp > list1.exp) {
sum.addNode(list2.coe, list2.exp);
list2 = list2.next;
}
}
return sum;
}
Комментарии:
1. Где ваш метод печати (или toString)?
Ответ №1:
Если один из списков заканчивается первым, остальные элементы в другом списке игнорируются и не добавляются к сумме.
Добавьте дополнительные циклы
while(list1 != null) {
sum.addNode(list1.coe,list1.exp);
list1=list1.next;
}
и
while(list2 != null) {
sum.addNode(list2.coe,list2.exp);
list2=list2.next;
}