2013-10-06 62 views
0

我需要使用遞歸在鏈表的前面添加一個節點。如何在java中遞歸地在鏈表前添加一個節點

下面是我試圖實現的add方法。我只能想出如何在它的鏈接列表:(

public void add(E element) 
    { 
     Node<E> newNode = new Node<E>(element, null); 

     if (this.next == null) 
     { 
      this.next = newNode; 
     } else { 
      next.add(element); 
     } 
    } 
+1

遞歸在這裏有什麼用?我不明白。 –

+3

在一張紙上繪製您需要用新節點和現有節點做什麼。這會讓事情更清楚。另外,我們無法讀取屏幕上的內容,因此只能猜測Node類的外觀。 –

+1

答案會有所不同,取決於以下問題:有沒有標題節點?還是有一個列表類別以外的節點?列表是可變的還是不可變的?可以添加返回值,或者必須返回上面的void嗎? –

回答

1

的後面添加到項目添加到您創建一個新的節點單鏈表的前端,使之指向第一列表中的節點。

現在這個新的節點是鏈表的新的第一個節點。

+0

這會在列表的開頭添加它嗎? 'Node newNode = new Node (element,next);' – lauraxx

+0

@lauraxx取決於'next'的值, – Philipp

1

它應該是相當簡單的,不是添加元素到底要容易得多。

喜歡的東西這應該工作:

public void addToFront(E element) { 
    element.next = rootElement; 
    rootElement = element; 
} 
0

的算法應該是這樣的

public void add(E element) 
    { 
     Node<E> newNode = new Node<E>(element, null); 
     if (root == null) 
     { 
     root = new Node(element, null); 
     } 
     else 
     { 
     Node temp = new Node(element, null); 
     temp.next = root; 
     root = temp; 
     } 
    } 
0
public Node<E> addFirst(E element) 
{ 
    return new Node<E>(element, this.next); 
} 

Node<String> list; 
... 
list = list.addFirst("a"): 

在Java SE另一個伎倆做:讓外部容器LinkedList類有現場的「節點」。這使得維護一個計數器size()。這是一個有狀態的課程。

上面的代碼可以用於不可變列表類,這對於併發很有用。