通过索引从单个链表中删除
本文关键字:链表 删除 单个 索引 | 更新日期: 2023-09-27 18:33:40
如何在不使用尾巴的情况下通过索引插入到通用链表。
public void RemoveByIndex(int index)
{
int count = 0;
LinkedListNode<T> current = Head;
while (count <= index)
{
if (count == index)
{
current.Next = null;
}
else
{
current = current.Next;
}
count++;
}
Head = current;
}
我有包含数据 5、10、15 的 int 列表数组。而且我不知道为什么当我给他第一个索引时,它总是删除我 5,15。
第一次迭代(计数 = 0)=> else
块执行 => current = current.next
=> 当前 = 10,当前.下一个 = 15
第二次迭代 (count=1) => if
块被执行 => current.next = null
=> 15 被删除 => 当前 = 10
在第二次迭代结束时,计数 = 2 并退出 while 循环 => Head = current
=> 头 = 10 => 删除 5
可能的解决方案:
public void RemoveByIndex(int index)
{
int count = 0;
LinkedListNode<T> current = Head;
LinkedListNode<T> previous = current;
while (count <= index)
{
if (count == index)
{
previous.next = current.next
current = null;
}
else
{
previous = current;
current = current.Next;
}
count++;
}
}
var list1 = new LinkedList<int>();
var nodesToRemove = list1.Where(x => x == index).ToList();
foreach(var node in nodesToRemove)
lis1.Remove(node);