-2
데이터 구조 코스의 경우이 DLList Tutorial을 기반으로 DLList 프로그램을 만들었습니다. 나는 두 개의 함수 displayWithForLoop()
과 display()
을 만들었습니다. 나는 그들에게 동일한 산출물을 산출 할 것을 기대했지만 그렇게하지 않았다. 왜 그런가요?DLList : 내 함수가 예상 출력을 생성하지 않습니다.
public class DLList<E> {
Node dummy, head, tail;
int size;
public DLList() {
size = 0;
}
class Node {
E element;
Node next;
Node prev;
public Node(E element, Node next, Node prev) {
this.element = element;
this.next = next;
this.prev = prev;
}
}
public void pushNode(E item) {
Node newNode = newNode(item, head, dummy);
if(head != null) head.prev = newNode;
head = newNode;
if(tail == null) = newNode;
size++;
System.out.println("pushing: " + element);
}
public void display() {
System.out.println("iterating forward...");
Node pointer = head;
while (pointer != null) {
System.out.println(pointer.element);
pointer = pointer.next;
}
}
public displayWithForLoop() {
Node pointer = head;
for(int i = 0; i < size -1; i++) {
pointer = pointer.next;
System.out.println(pointer.element);
}
}
public static void main(String args[]) {
DLList<Integer> list = new DLList<Integer>();
list.pushNode(15);
list.pushNode(25);
list.pushNode(35);
list.displayWithForLoop();
System.out.println("***");
list.display();
}
}
내 출력은 다음과 같습니다 pushing: 15 pushing: 25 pushing: 35 3 25 15 *** iterating forward.. 35 25 15
왜 list.display 다른 list.displayWithForLoop()()의 출력입니까?
맞습니다. 오, 이런, 너무 당황 스럽다. 이유는 '3'과 '35'가 아닌 이유는 원래 코드에서 function getSize()를 사용하여 displayWithForLoop() 전에 '3'이었던 목록의 크기를 가져 왔기 때문입니다. 친절하게 도와 주셔서 대단히 감사합니다. –