【问题标题】:C# Working with a LinkedList DataStructure from baseC# 使用来自 base 的链表数据结构
【发布时间】:2016-04-17 18:54:39
【问题描述】:

我目前正在学习剑桥数据结构书,每次我想到一个问题,在我看到解决方案之前,我都会尝试解决它。 我遇到了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# algorithm data-structures linked-list nodes


    【解决方案1】:

    考虑循环条件:

    while (runner != end)
    

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

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

    把循环条件改成这样:

    while (runner.Next != end)
    

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-10
      • 2016-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-06
      • 1970-01-01
      相关资源
      最近更新 更多