2015-10-21 19 views
0

我需要建立一個雙重鏈接列表,它爲每個字符都需要一個字符串和構建節點。關於doublyLinkedList

public class doublyLinkedlist{ 
    private Node first; 
    private Node last; 

    public doublyLinkedList(String a){ 
     first=new Node(a.charAt(0),null); 
     last=new Node(a.charAt(1),first); 
    } 
} 

所以,如果我有一個String "ab"中,第一個包含「一個」,最後包含「B」。

但這不是我想要的。我的構造函數應該能夠爲String中的每個char構建節點。有人可以向我解釋LinkedList是如何工作的嗎?

謝謝。

回答

1

你怎麼定義你的Node類?嘗試類似

class Node 
{ 
    String val; 

    Node next, prev; 

    public Node getNext() { 
    return next; 
} 

public void setNext(Node next) { 
    this.next = next; 
} 

public Node getPrev() { 
    return prev; 
} 

public void setPrev(Node prev) { 
    this.prev = prev; 
} 

public Node(String v) 
    { 
     val=v; 
    } 

您需要添加功能來設置下一個和前一個節點。現在,在您的doublyLinkedlist類的構造函數中,您只需分割輸入字符串併爲每個字符創建一個節點。另外,相應地設置next和prev。這有幫助嗎?如果需要,我可以提供更詳細的代碼,但我會敦促你嘗試。

好了,你的doublyLinkedlist構造看起來像

public doublyLinkedlist(String a) { 

     String [] arr = a.split(""); 

     first = new Node(arr[0]); 

     last = new Node(arr[arr.length-1]); 

     first.setPrev(last); 

     last.setNext(first); 
     Node temp = first; 
     for (int i=1 ; i<arr.length-1 ; i++) 
     { 
      Node newNode = new Node(arr[i]); 
      temp.setNext(newNode); 
      newNode.setPrev(temp); 

      temp = temp.next; 
     } 

     //finally 

     temp.prev.next = temp; 
    } 
+0

也請注意,你可能需要創建一個臨時的節點,以確保您的頭節點不創建後移動。那有意義嗎? – AbtPst

+0

所有這些代碼都在構造函數中? – FrankTby

+0

請立即看到最新的編輯。 Node類可以是單獨的類,也可以是雙鏈表類的一部分 – AbtPst