#java #linked-list
#java #связанный список
Вопрос:
это проблема домашнего задания, но на самом деле ее не нужно оценивать, просто что-то, что можно использовать в будущих проектах. У меня возникли проблемы с отображением того, что у меня есть в моем списке / узлах. В основном я получаю сообщение об ошибке при вызове DisplayList.
Слияние объединяет списки в новый, который включает все элементы списка 1 и 2.
Объединение включает только по одному из каждого дубликата из списков 1 и 2.
Пересечение включает только дубликаты из списков 1 и 2, а не из того же списка.
Обратите внимание, что в методе слияния код в форме примечания — это просто альтернативная форма текущей, я полагаю.
//Kevin Clement
//Homework 2
class LinkedListHomework
{
public static ListNode Merge(ListNode List1, ListNode List2)
{
ListNode head, tail;
head = tail = new ListNode( "Hi1");
while(List1 != null amp;amp; List2 != null)
{
if(List1.getItem().toString().compareTo(List2.getItem().toString()) < 0)
{
tail.setNext(new ListNode(List1.getItem()));
List1 = List1.getNext();
}
else
{
tail.setNext(new ListNode(List2.getItem()));
List2 = List2.getNext();
}
tail = tail.getNext();
}
// while(List1 != null)
// {
// tail.setNext(new ListNode(List1.getItem()));
// tail = tail.getNext();
// List1 = List1.getNext();
// }
//
// while(List2 != null)
// {
// tail.setNext(new ListNode(List2.getItem()));
// tail = tail.getNext();
// List2 = List2.getNext();
// }
return head.getNext();
}
// public static ListNode Union(ListNode List1, ListNode List2)
// {
//
//
//
// }
// // public static ListNode Intersection(ListNode List1, ListNode YList2)
// {
//
// }
public void displayList()
{
ListNode temp = head;
System.out.print("head");
while(temp != null)
{
System.out.print("--> " temp.getItem());
temp = temp.getNext();
}
System.out.print("nn");
}
public static void main(String args[])
{
ListNode A = new ListNode("Adam", new ListNode("Andrew", new ListNode("Kyle", new ListNode("Luc", new ListNode("Michael", new ListNode("Tony"))))));
ListNode B = new ListNode("Adam", new ListNode("Fallon", new ListNode("Jim", new ListNode("Kyle", new ListNode("Nina", new ListNode("Shea", new ListNode("Tony")))))));
displayList(A);
A.displayList();
}
}
Хорошо, вот мои ошибки, я чувствую, что их копирование будет более полезным для вас, ребята, чем я, пытающийся объяснить, что не так.
LinkedListHomework.java:61: cannot find symbol
symbol : variable head
location: class LinkedListHomework
ListNode temp = head;
^
LinkedListHomework.java:78: displayList() in LinkedListHomework cannot be applied to (ListNode)
displayList(A);
^
LinkedListHomework.java:79: cannot find symbol
symbol : method displayList()
location: class ListNode
A.displayList();
^
3 errors
Комментарии:
1. Форматирование, форматирование, форматирование. Это действительно окупается (например, после этого комментария я оставлю этот вопрос, потому что, если вы не проявляете высокомерия… для меня это не стоит 😉
2. Что сказал @pst. Если вы хотите игнорировать рекомендации по форматированию, вам лучше быть достаточно крутым, чтобы не обращаться за помощью.
3. итак, каков ваш конкретный вопрос, кроме «сделай это для меня?»
4. Пожалуйста, объясните форматирование, что не так с моим форматированием? Я бы с радостью изменил его, если бы знал. Также отредактирую мой вопрос, потому что я пропустил части. извините.
5. Отступ @KevinClement показывает структуру и помогает передавать намерения.
Ответ №1:
Первая ошибка связана со строкой ListNode temp = head;
: head
не был объявлен.
Вторая ошибка заключается в том, что вы пытаетесь вызвать displayList
с аргументом: он не принимает аргументов. Кроме того, это не статический метод — он должен вызываться для объекта.
Третья ошибка заключается в том, что вы пытаетесь вызвать displayList
объект класса ListNode
, в то время displayList
как на самом деле принадлежит классу LinkedListHomework
.
Комментарии:
1. И пытается вызвать метод экземпляра из статического метода.