C#使用基于的LinkedList数据结构
本文关键字:LinkedList 数据结构 | 更新日期: 2024-09-22 04:44:50
我目前正在学习剑桥数据结构书,每次思考问题时,在看到解决方案之前,我都会尝试解决它。我的RemoveLast()
有问题
public void RemoveLast()
{
if (end != null)
{
Node runner = start; //if end != null then start is initialized.
while (runner != end)
{
runner = runner.Next;
}
runner.Next = null;
end = runner;
}
}
我的代码有什么问题?伙计们!
考虑循环条件:
while (runner != end)
在循环结束时,runner
等于end
。因此,您基本上将end.Next
设置为null
,并将end
设置为自身。
您需要到达end
节点之前的节点。
将循环条件更改为:
while (runner.Next != end)
这将确保在循环结束时,runner
将是正好在end
节点之前的节点。
还请注意,此代码不处理start
等于end
的情况(当链表仅包含一个节点时)。