簡體   English   中英

雙鏈表邏輯

[英]Doubly Linked List logic

我正在嘗試在JUnit中運行getPrevious()方法的測試。

public void getPrev(){
    for (int i = 0; i < 1000; i++) {
        list.add(i);    
    }
    list.reset();
    for (int i = 999; i >= 0; i--) {
        int info = list.getPrevious();
        assertEquals(i, info);
    }
}

除了這個之外,其他所有方法似乎都有效。 運行一些打印測試后,我意識到了重置方法

...reset(){
    if (list != null)
        location = list.getPrev();//returns the last node's previous node -- head node.
}

(這應該使位置節點成為頭節點)沒有返回正確的信息。 它返回null而不是head節點。

因此,我的邏輯讓我相信add方法不能正常工作。 這也是我的問題。 我一直在嘗試多種方法來查看錯誤的位置,但似乎沒有任何效果。 我想看看是否有人可以幫助發現此代碼中的邏輯錯誤。

 public void add(Object elem) {
     LLNode<T> newNode = new LLNode(elem);

     if(list == null){
         tail = list = newNode;
     }
     list.setPrev(newNode);
     newNode.setNext(list);
     newNode.setPrev(tail);
     tail.setNext(newNode);
     list = newNode;
     size++;
 }

試試這個

 public int add(Object elem) {
    Node node = new Node(elem);

    if (head == null) {
        head = node;
    } else {
        tail.setNext(node);
        node.setPrevious(tail);
    }

    tail = node;
    return value;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM