簡體   English   中英

如何為單鏈接列表實現“添加”方法?

[英]How Do You Implement “add” method to Singly Linked List?

這是類標題及其下面的字段:

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?
   }

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

最初,您的頭部成員數據設置為null。 如果這是一個要求(相對於最初分配它),您需要在add()方法中檢查它並在必要時分配它:

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

如果head不為null,則必須分配一個新條目,並允許現有數據通過讓新數據引用它而保留為列表的一部分:

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

好吧,鏈接列表的工作方式如下:

你有頭節點,它有一個對下一個節點的引用,它引用了下一個節點,等等。這是我剛繪制的圖:

鏈表圖

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

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

頭部有數據VEGGIES,然后還有對列表中下一個對象的引用,換句話說就是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”對象來實現它。

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

您必須處理兩種情況:

  1. 列表為空時
  2. 當列表不為空時

想想在這兩種情況下你需要做什么。

暫無
暫無

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

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