试图在单个链表中获取元素的值

时间:2012-12-10 10:22:25

标签: c# singly-linked-list

我正在编写自己的单一链表用于学习目的,但我坚持使用“获取”方法。

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  有什么方法可以防止这种情况吗?

2 个答案:

答案 0 :(得分:2)

因为它从0开始,所以for()循环应该在i = index - 1(即i < index)时停止:

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

第一个元素位于0位置,因此最后一个元素位于index - 1位置。

答案 1 :(得分: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;
}

这对我有用