2012-10-22 53 views
0

這裏是低於其字段一起類的頭:如何實現「添加」方法到單鏈表?

public class SinglyLinkedList <E> implements MiniList <E> 
{ 
    protected Entry <E> head = null; 

    private int size = 0; 

我需要實現我的實驗室這種方法,我無言以對與LinkedLists:

public boolean add(E element) 
    { 

     //method should return true once element is added 

     //EDIT: I THINK I SOLVED IT: 
     head.element = element; 
     return true; 

     //Does everyone think the two lines above look correct? 
    } 

所以很簡單的問題,我對非隨機訪問數據結構非常新穎。有人能爲我解決上面的問題嗎?我需要一個基礎基礎,以便我可以繼續實驗室的其餘部分。

+2

你只是把你的任務放在我們身上,毫不費力地要求解決你的問題?也許試試看,如果你失敗了 - 問一個關於不成功嘗試的具體問題? (編輯:自從發表評論以來,這個問題被天真的嘗試編輯)。 – amit

+1

這看起來不對。只是說。如果列表爲空,那就對了。 – Clark

+0

在網上有_many_單向鏈表的例子來幫助你打下堅實的基礎。甚至有幾個用Java語言跳轉到搜索結果的頂部。試一試併發布你的進度。讓我們知道您特別遇到什麼問題,並且您可能會獲得更多支持。 – jheddings

回答

1

好,鏈表是這樣的:

你有頭節點,這有對下一個節點的引用,它對下一個節點有引用,等等。下面是一個diagr我只是畫了:

Linked List Diagram

頭部有以下節點的引用,但它也有內部的數據。所以,如果我創建一個字符串的鏈接列表。

LinkedList<String> groceryList = new LinkedList<String>(); 
groceryList.add("VEGGIES"); 
groceryList.add("FRUITS"); 

頭部具有數據蔬菜,然後還有一個參考到列表中的下一個對象,換句話說果實術語,這也是尾巴。

比方說,我們的清單是空的。沒有頭,沒有尾巴,沒有數據。我們把我們的頭指定爲新條目。這將是列表中的第一個元素,也是我們進入列表的門戶。如果列表不是空的,爲了添加到列表中,我們必須訪問列表中當前的最後一個元素。要做到這一點,我們必須沿着名單走。

//Some Pseudo Code 
Entry current = head; 
Entry last = null; 
while(Not Done Looping) 
{ 
    Entry temp = current.getNext(); 
    if(temp is not null) //We have a reference to another element 
    { 
     //We have more list to see 
     current = temp; 
    } 
    else 
     last = current; 
} 

這會給我們最後的輸入。然後爲了添加另一個元素,我們只需將最後一個對象的引用設置爲我們要添加的Entry。

這是它的工作原理。現在你只需要根據你的「Entry」對象來實現它。

0

我假設添加意味着添加一個元素到該列表?你有什麼嘗試?

有兩種情況,你必須處理:

  1. 當列表爲空
  2. 當列表不爲空

想想你需要在這兩種情況下該怎麼做。

1

最初,您的成員數據設置爲空。如果這是一個要求(相對於最初分配它),你需要在你的add()方法以檢查並在必要時給它分配:

if (head == null) 
{ 
    head = new Entry<E>(); 
    head.element = element; 
} 

,如果頭部不爲空,你必須分配一個新的進入和允許現有的數據具有新的數據引用它留在名單中的一部分。

else 
{ 
    Entry<E> new_entry = new Entry<E>(); 
    new_entry.element = element; 
    new_entry.next = head; 
    head = new_entry; 
} 
+0

else子句是錯誤的。我不知道你會如何假設E,一個泛型類型,有一個元素屬性。 –

+0

E沒有元素屬性。入場確實。輸入不是E. – Scooter

+0

雖然再次查看它,但確實需要修改。必須爲新數據分配新的Entry()。這就是我不使用編譯器的原因。 – Scooter