Обновление: Большое спасибо всем, кто откликнулся !!!Это заставило меня почувствовать, что я не совсем одинок в своих усилиях по изучению Java.Пожалуйста, извините, но я думаю, что я недостаточно прояснил, что я не получаю о связанных списках и приложении упражнения - сначала
- как определение класса может содержать объектсамо по себе, я знаю, что это рекурсия, но это все еще очень странная и чуждая мне концепция.
секунда - как именно объект связанного списка может «связать» другой узел?
третье - если два объекта разделены знаком равенства, это означает, что - что второй объект исчезает, а от него остается только его «имя», которое теперь указывает на первый объект или порокнаоборот?
тогда - то, что я не понимаю в программе, которую я цитировал ниже, заключается в следующем: после создания экземпляра класса linkList вызывается его конструктор, и он дает объектКласс Link private Link сначала имеет значение null, т.е. устанавливает его, указывая на ничто.Затем, когда создается первый новый узел, вызывается метод public void insertFirst, он присваивает значения объекта своим переменным, а затем происходит нечто абсурдное - сначала объект, который указывает на ничто, присваивается новому элементу, таким образом заставляя оба объекта указывать наничего и с первым = newLink;Я полностью потерян ...
Я учусь в колледже на Алгоритмы и структуры данных, и, поскольку профессор действительно подлый и его объяснения бесполезны, я пытаюсь учиться самостоятельноиз книги под названием «Алгоритмы и структуры данных» Роберта Лафора.
Теперь я изучаю связанные списки, и в книге приведен следующий пример кода для реализации связанного списка:
Link.java:
class Link
{
public int iData; // data item
public double dData; // data item
public Link next; // next link in list
public Link(int id, double dd) { // constructor
iData = id; // initialize data
dData = dd; // ('next' is automatically
} // set to null)
public void displayLink() { // display ourself
System.out.print("{" + iData + ", " + dData + "} ");
}
}
LinkList.Java:
class LinkList {
private Link first; // ref to first link on list
public LinkList() { // constructor
first = null; // no links on list yet
}
public boolean isEmpty() { // true if list is empty
return (first==null);
}
// insert at start of list
public void insertFirst(int id, double dd) { // make new link
Link newLink = new Link(id, dd);
newLink.next = first; // newLink --> old first
first = newLink; // first --> newLink
}
public Link deleteFirst() { // delete first item
// (assumes list not empty)
Link temp = first; // save reference to link
first = first.next; // delete it: first-->old next
return temp; // return deleted link
}
public void displayList() {
System.out.print("List (first-->last): ");
Link current = first; // start at beginning of list
while(current != null) // until end of list,
{
current.displayLink(); // print data
current = current.next; // move to next link
}
System.out.println("");
}
}
LinkListApp.java:
class LinkListApp {
public static void main(String[] args) {
LinkList theList = new LinkList(); // make new list
theList.insertFirst(22, 2.99); // insert four items
theList.insertFirst(44, 4.99);
theList.insertFirst(66, 6.99);
theList.insertFirst(88, 8.99);
theList.displayList(); // display list
while( !theList.isEmpty() ) { // until it's empty,
Link aLink = theList.deleteFirst(); // delete link
System.out.print("Deleted "); // display it
aLink.displayLink();
System.out.println("");
}
theList.displayList(); // display list
}
}
Я просто НЕ МОГУ понять код, который вставляет и отображает элементы в классе связанного списка.
Как может получиться, что newLink.next = first; and first = newLink;
после создания нового объекта?
Пожалуйста, помогите!