如何获取单链表中元素的索引?

时间:2012-12-06 14:59:09

标签: c# indexing stack singly-linked-list

我有两个班级:

方法的SLList(私有SLElement _root)

用于为列表创建新元素的SLElement。 (public int _value; public SLElement _next)

我已经完成了add-method:

public void Add(int value)
{
  SLElement addNewElement = new SLElement();
  addNewElement._value = value;
  SLElement rootCopy = _root;
  _root = addNewElement;
  addNewElement._next = rootCopy;
  Console.WriteLine(addNewElement._value);
}

所以现在我想要一个删除功能。我已经知道它删除了一个具有特定值的元素,但我希望它能删除具有特定索引的元素。如何找到列表中元素的索引?

3 个答案:

答案 0 :(得分:4)

你需要从头开始遍历你的清单,并沿途计算。

答案 1 :(得分:2)

除非你有充分的理由想要创建自己的,我相信你应该去LinkedList

var list = new LinkedList<SLElement>();

list.AddAfter(list.AddFirst(new SLElement()), new SLElement());

list.Remove(list.Select((i, j) => new { i, j })
    .Where(j => j.j == 0)//remove the first node
    .Select(i => i.i)
    .FirstOrDefault());

答案 2 :(得分:1)

循环索引时间并找到元素

public SLElement Remove(int index)
{
    SLElement prev = _root;
    if(prev == null) return null; //or throw exception
    SLElement curr = _root.next;
    for(int i = 1; i < index; i++)
    {
      if(curr == null) return null; //or throw exception
      prev = curr;
      curr = curr.next;
    }
    prev.next = curr.next; //set the previous's node point to current's next node
    curr.next = null;
    return curr;
}