0

学習目的で独自のリンク リストを作成していますが、「Get」メソッドに固執しています。

public void Get(int index)
{
  SLElement curr = _root;
  SLElement prev = _root._next;
  for (int i = 0; i <= index; i++)
  {
    while (curr._next != null)
    {
      if (curr == null) return;
      prev = curr; 
      curr = curr._next;
    }
  }
  prev._next = curr._next;
  curr._next = prev;
  Console.WriteLine("Index {0} has the value {1}", index, curr._value);
}

うまくいくようですが、リストの最後の要素の値を知りたいときは、NullReferenceException これを防ぐ方法はありますか?

4

2 に答える 2

2

0 から始まるため、for()ループは次の場合に停止する必要がありますi = index - 1(ie i < index) :

for (int i = 0; i < index; i++)

最初の要素は位置 0 にあるため、最後の要素は位置 にありindex - 1ます。

于 2012-12-10T10:24:35.687 に答える
1

私は今それをこのように動作させました:

public void Get(int index)
{
  SLElement curr = _root;
  SLElement prev = _root._next;
  for (int i = 0; i <= index; i++)
  {
    while (curr._next != null)
    {
      if (curr == null) return;
      prev = curr; 
      curr = curr._next;
    }
  }
  Console.WriteLine("Index {0} has the value {1}", index, curr._value);
  if (prev == null) return;
  prev._next = curr._next;
  curr._next = _root;
}

これは私のために働く

于 2012-12-10T11:43:09.327 に答える