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;
             }
        }

我的代码有什么问题?伙计们!

C#使用基于的LinkedList数据结构

考虑循环条件:

while (runner != end)

在循环结束时,runner等于end。因此,您基本上将end.Next设置为null,并将end设置为自身。

您需要到达end节点之前的节点。

将循环条件更改为:

while (runner.Next != end)

这将确保在循环结束时,runner将是正好在end节点之前的节点。

还请注意,此代码不处理start等于end的情况(当链表仅包含一个节点时)。