【问题标题】:a method about array algorithm一种数组算法的方法
【发布时间】:2021-12-29 21:58:43
【问题描述】:
class Node {
    public int value;
    public Node next;
}

    private static Node GenerateList(params int[] array) {
        Node node = null;
        for (int i = a.Length - 1; i >= 0; i--) { 
            node = new Node { value = array[i], next = node }; 
        }
        return node;
    }

这个GenerateList 方法从数组中创建一个列表,但我无法理解node = new Node { value = array[i], next = node };

第一个例子,在第一个循环中:节点等于一个新节点,但新节点的下一个节点指向旧节点。在第二个循环中,第二个新节点等于第一个节点,第二个新节点的节点会指向第一个节点,但是第二个节点会发生什么?

我不明白什么?

【问题讨论】:

  • “一种关于数组算法的方法”似乎不是您问题的摘要。请重试,并编写符合How to Ask 中规定的指南的标题。
  • 尝试运行扩展版sharplab.io/…,逐行调试docs.microsoft.com/en-us/visualstudio/debugger/…(其他IDE也有类似功能)
  • 嗯,你有构造函数吗?我认为这需要一个构造函数,像这样:
  • 公共节点(整数值,下一个节点)

标签: c# arrays algorithm


【解决方案1】:

这是arraylink list 算法。
输入:数组
输出:链接列表

起始节点设置为数组的最后一个元素。 next 设置为数组中最近的项目,该项目将在循环的下一次迭代中设置。在每一步中,您在数组中向后移动直到数组的开头。

这个例子可以帮助:

【讨论】:

    【解决方案2】:

    让我试着解释一下,但不确定这就是你要找的。​​p>

    它似乎将 Array 转换为 LinkList,更具体地说是 Queue。

    现在,如果您仔细查看 for 循环,那么它的顺序是相反的。

    1. 在第一次迭代节点 = null。那时它将从数组中获取最后一个元素并创建节点并分配到 null 旁边。此过程为节点变量分配新的引用。

    2. 现在进行第二次迭代,它将数组中的倒数第二个值分配给节点值,届时它将分配先前创建的节点作为下一个。

    这将到达第一个值和节点。

    如果你刚刚引用了节点,如果你开始寻找下一个节点是否存在,那么它将上升到数组的最后一个值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-18
      • 2016-02-11
      • 1970-01-01
      • 2017-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-15
      相关资源
      最近更新 更多