Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich hab ein Problem beim programmieren einer LinkedList.
Ich bin mir ziemlich sicher, dass das Programm funktionieren sollte.
Class: List.java
Java:
package linkedList;
public class List {
private ListPart root;
private int length;
void add(ListPart part) {
ListPart list = root;
if (root == null) {
root = part;
} else {
while (list.next != null) {
list = list.next;
}
list.next = part; //<-- Problem!!
}
length++;
}
public int getLength() {
return length;
}
public boolean isEmpty() {
if (length == 0) {
return true;
}
return false;
}
@Override
public String toString() {
return "List [root=" + root + "]";
}
public static void main(String[] args) {
List l1 = new List();
ListPart i1 = new ListPart("Apple");
l1.add(i1);
l1.add(i1);
System.out.println(l1);
}
}
Class: ListPart.java
Java:
package linkedList;
class ListPart {
ListPart next;
String name;
ListPart(String name) {
this.name = name;
}
@Override
public String toString() {
return "ListPart [next=" + next + ", name=" + name + "]";
}
}
Es wird an der gekennzeichneten Stelle(im erstem source), auf einmal nur mehr "Apple"s eingefügt.
Der zweite source ist die "ListPart" Klasse, die einen ListenTeil beschreibt.
Der Debugger(Bild unten) zeigt mir das die List(rechts oben) mit Apples gefüllt ist.
Ich verwende eclipse und java 7(habe es in java 6 auch versucht).
Ich danke euch für jede Hilfe!
da du 2 mal das selbe Element addest Wird Element.next zu Element. Das heißt, das Element zeigt auf sich selbst, was keinen Sinn ergibt.
Normalerweise gehört die "ListPart" als InnerClass in die Liste, und NUR die liste selbst erstellt sich dann ein Element, wenn du etwas addest.
Java:
package linkedList;
public class List {
private ListPart root;
private int length;
void add(String part) {
ListPart list = root;
if (root == null) {
root = new ListPart(part);
} else {
while (list.next != null) {
list = list.next;
}
list.next = new ListPart(part); //<-- Problem!!
}
length++;
}
public int getLength() {
return length;
}
public boolean isEmpty() {
if (length == 0) {
return true;
}
return false;
}
@Override
public String toString() {
return "List [root=" + root + "]";
}
public static void main(String[] args) {
List l1 = new List();
l1.add("Apple");
l1.add("Apple");
l1.add("Cherry");
System.out.println(l1);
}
class ListPart {
ListPart next;
String name;
ListPart(String name) {
this.name = name;
}
@Override
public String toString() {
return "ListPart [next=" + next + ", name=" + name + "]";
}
}
}