我有两个班级:
方法的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);
}
所以现在我想要一个删除功能。我已经知道它删除了一个具有特定值的元素,但我希望它能删除具有特定索引的元素。如何找到列表中元素的索引?
答案 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;
}