1
나는 Linked List를 더 잘 이해하기 위해 연습을하고 있습니다.링크 된 목록에 추가 참조 개체가있는 이유는 무엇입니까?
내 출력된다 :
*** DISPALY 명칭 미키 널 Arek 널 동방 널
문제점 : 이름 사이 표시 널.
시도 : 많은 수의 인쇄 문을 써서 추가 Name 참조 개체를 목록에 추가하는 것처럼 보입니다. 나는 add 메소드에서 오류를 찾고자했지만 논리적으로는 모든 것이 나에게 벌금이된다.
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());
}
}
다음 클래스 이름이 같아야합니다
인스턴스 변수 : 다음 개인 이름; 혼란 스럽습니다. 위의 코드에서 수정했습니다.
감사합니다. 클래스 이름에서 인스턴스 변수 next는 다음과 같아야합니다. private Name next; 혼란 스럽습니다. 위의 코드에서 수정했습니다. 아마도 재미있는 질문이지만 어떻게 오버로드 된 생성자에서 "next"를 인스턴스화해야합니까? 나는 단지 하나의 아이디어를 가지고 있지만 그것이 올바른지는 잘 모르겠다. next = null; – user1282256
'next = null; '이라고 쓸 수는 있지만 그렇게 할 필요는 없습니다. 객체 유형의 인스턴스 변수는 항상 null로 기본 설정됩니다. –