-2
データ構造のコースでは、このDLList Tutorialに基づいてDLListプログラムを作成しました。私は2つの関数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()()のために出力されますか?
あなたは正しいです。ああ、私はあまりにも恥ずかしい気がする。私の元のコードでは、displayWithForLoop()の直前に '3'だったリストのサイズを取得するために、関数getSize()を使用していたため、 '3'と '35'以外の理由がありました。ご親切にお世話になり、ありがとうございます。 –