나는 이해하기가 힘듭니다. 코드 스 니펫 자체는 이중 연결된 목록의 생성자입니다. 그러나 마지막 행은 다음과 같이 말합니다. (head = head.next) .previous = null; 이것은 아마도 배열 a에서 노드를 추가하는 데 사용되는 임시 노드를 제거합니다. 그러나 어떻게 작동합니까? 누군가가 명확하고 분리 된 선으로 분해 할 수 있다면 매우 도움이 될 것입니다.Java 구문이 혼동했습니다.
// standard constructor
public DoublyLinkedList() {
head = tail = null;
numElements = 0;
changes = 0;
}
// constructor
public DoublyLinkedList(T[] a) {
this(); // call the standard constructor
Objects.requireNonNull(a, "a is null!");
head = tail = new Node<>(null); // a temporary node
for (T value : a) {
if (value != null) {
tail = tail.next = new Node<>(value, tail, null); // new node at the back
numElements++;
}
}
// remove the temporary node
if (numElements == 0) head = tail = null;
else (head = head.next).previous = null; // the problematic bit
}
이것은 논리 질문입니까 구문 질문입니까? 정확히 당신이 이해하지 못하는 것은 무엇입니까? – shmosel
@shmosel 나는 그것이 구문 문제가 더 많은 것 같아요, 주석 주셔서 감사합니다. –