#java #methods #linked-list
#java #методы #связанный список
Вопрос:
По сути, эта проблема принимает связанный список в качестве параметра и вычитает его содержимое из вызывающего связанного списка, если в обоих имеется одинаковое содержимое. Я должен сделать это таким образом (чтобы не изменять параметры).
Например: l1.subtractList(l2) будет вычитать содержимое l2 из l1.
Проблема здесь в том, что вызывающий связанный список имеет 2 одинаковых номера, и это число также находится в связанном списке, переданном в качестве параметра. Мне также нужно удалить только один его экземпляр.
Мне удалось вычесть все, кроме этого повторяющегося числа, но я не уверен, что я делаю неправильно. Имейте в виду, что это очень новая тема для меня, поэтому я могу быть далеко от базы. Но я ценю любую помощь, которую вы можете предложить. Спасибо.
public void subtractList(LinkedList list)
{
Node current = head;
Node<Integer> temp = list.getFirst();
Integer count = -1;
while (current != null)
if (current == temp){
count ;
list.listRemove(count);
temp = list.getFirst();
}
else
{
current = current.getNext();
}
}
Ответ №1:
Что такое метод listRemove? Зачем вам нужен count? Просто просмотрите аргумент list
и проверьте, существует ли его элемент temp
в вызывающем связанном списке. Вам понадобится внешний цикл, проходящий по списку, переданному в качестве аргумента, и внутренний цикл, выполняющий итерацию по вызывающему списку, чтобы проверить значение элемента, который необходимо удалить, и удалить его, если требуется
while(temp!=null)
{
while(current!=null){
//Check if element exists in list
//If yes, remove it from the calling list
}
//Repeat
temp = temp.getNext();
}
Комментарии:
1. Это специфический метод для этого назначения. Я понял это, но ваш ответ помог мне добраться туда! Спасибо