簡體   English   中英

我有一個鏈表的模板,我正在嘗試將其轉換為Java中的循環雙鏈表

[英]I have the template for a linked list and I am trying to turn it into a circular doubly linked list in java

我試圖將一個鏈表變成一個循環的雙鏈表,但在使用鏈表類中的許多不同方法時遇到了一些麻煩,例如,我不知道如何更改writeList()方法這就是現在的樣子

public void writeLinkedList() {
    Node p, q;
    System.out.println("Writing list:");
    for (p = listStart, q = null; p != null; q = p, p = p.getNext());

    for (p = listStart; p != q; p = p.getNext())
        System.out.println(p.getData());
}

我使用第一個for循環將q標識為列表中的最后一個節點,我不確定該如何做。 我的節點類也發布在下面

public int getData() {
    return data;
}

public Node getNext() {
    return next;
}

public Node getPrev(){
    return prev;
}
//Mutators
public void setData(int x) {
    System.out.println("inside setData");
    data = x;
}

public void setNext(Node n) {
    next = n;
}

public void setPrev(Node p){
    prev = p;
}

我建議使用while循環來查找最后一個節點。 您可以這樣做:

Node p = listStart;
while(p.getNext() != null)
{
    Node temp = p;
    p = p.getNext();
    p.setPrev(temp);
}
//now that we are out p will be the last node in the list
//set p's next node to the first node
p.setNext(listStart);
listStart.setPrev(p);

這將使您的列表具有循環性和雙重鏈接。

暫無
暫無

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

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