0

以下は、クラス ヘッダーとそのフィールドです。

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

   private int size = 0; 

私は自分のラボでこのメソッドを実装する必要がありますが、LinkedList についてはよくわかりません。

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

非常に単純な問題であり、私は非ランダムアクセスデータ構造に非常に慣れていません。誰かが私のために上記の問題を解決できますか? ラボの残りの部分を続行できるように、基盤が必要です。

4

3 に答える 3

1

最初は、ヘッドメンバー データは null に設定されています。それが要件である場合 (最初に割り当てるのではなく)、 add() メソッドでそれを確認し、必要に応じて割り当てる必要があります。

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

head が null でない場合は、新しい Entry を割り当て、新しいデータがそれを参照するようにすることで、既存のデータがリストの一部として残るようにする必要があります。

else
{
    Entry<E> new_entry = new Entry<E>();
    new_entry.element = element;
    new_entry.next = head;
    head = new_entry;
}
于 2012-10-23T00:05:44.787 に答える
1

さて、リンクされたリストは次のように機能します。

ヘッドノードがあり、これには次のノードへの参照があり、次のノードへの参照があります。これは、私が描いたばかりの図です。

リンクリスト図

head には次のノードへの参照がありますが、内部には Data も含まれています。したがって、文字列のリンク リストを作成するとします。

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

head にはデータ 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 に設定するだけです。

それがどのように機能するかの要点です。「エントリ」オブジェクトが何であるかに基づいて、それを実装する必要があります。

于 2012-10-23T00:11:32.867 に答える
0

add はそのリストに要素を追加することを意味すると思いますか? 何を試しましたか?

次の 2 つのケースを処理する必要があります。

  1. リストが空の場合
  2. リストが空でない場合

どちらの場合も、何をする必要があるかを考えてください。

于 2012-10-22T23:55:43.377 に答える