1
我一直在努力的練習,以更好地瞭解鏈接列表。爲什麼我會在鏈接列表中找到額外的引用對象?
我的輸出是:
*** DISPALY名字 三木 空 Arek 空 賢士 空
問題:名之間顯示空值。
試圖做:寫了一堆打印語句,它看起來像添加額外的名稱引用對象到列表。我試圖在添加方法中發現錯誤,但邏輯上一切都罰款給我。
我不允許使用LinkedList API。
謝謝你的幫助。
<pre> <code>
public class NameTest {
public static void main(String[] args) {
NameList<Name> n = new NameList<Name>();
Name n1 = new Name(1,"Miki");
Name n2 = new Name(2, "Arek");
Name n3 = new Name(3, "Magi");
n.addName(n1);
n.addName(n2);
n.addName(n3);
n.displayNames();
System.out.println("*******************\n");
}
}
public class Name {
private int nameId;
private String firstName;
private Name next;
public Name() { }
public Name(int nameId, String firstName) {
super();
this.nameId = nameId;
this.firstName = firstName;
this.next = new Name();
}
public int getNameId() {
return nameId;
}
public void setNameId(int nameId) {
this.nameId = nameId;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public Name getNext() {
return next;
}
public void setNext(Name next) {
this.next = next;
}
}
public class NameList<T extends Name> {
private T head;
private int value;
public NameList() {
head = null;
value = 0;
}
public T getHead() {
return head;
}
public void setHead(T head) {
this.head = head;
}
public void addName(T name) {
if(head == null) {
setHead(name);
value++;
}
else {
T curr = getHead();
while(curr.getNext() != null) {
curr = (T) curr.getNext();
}
curr.setNext(name);
value++;
}
}
public void displayNames() {
System.out.println("***DISPLAY NAMES ");
T curr = getHead();
while(curr.getNext() != null) {
System.out.println(curr.getFirstName());
curr = (T) curr.getNext();
}
if(curr.getNext() == null) {
System.out.println(curr.getFirstName());
}
}
實例變量未來的類名應該是這樣的:下一個專用名稱;我很抱歉混淆。我在上面的代碼中進行了更正。
謝謝你的建議。類名稱中的實例變量應該如下所示:private Name next;我很抱歉的混淆。我在上面的代碼中進行了更正。也許這是一個有趣的問題,但我應該如何在重載的構造函數中實例化「next」?我只有一個想法,但我不確定它是否正確next = null; – user1282256
你可以寫'next = null;'但你不需要。對象類型的實例變量總是默認爲null。 –