如何在类函数中编辑变量?

卡航

我偶然发现了应该删除链表最后一个元素的这段代码。我不明白如何通过修改局部变量来修改类属性:

class LinkedList {
  constructor() {
    this.head = null;
  }
  removeLast() {
    if (!this.head) {
      return;
    }

    if (!this.head.next) {
      this.head = null;
      return;
    }

    let previous = this.head;
    let node = this.head.next;
    while (node.next) {
      previous = node;
      node = node.next;
    }
    previous.next = null;
  }
}

有任何解释或链接可以更好地理解该主题吗?谢谢。

优素福

您问题中的代码会修改对象引用。

与原始值不同,两个变量可以引用同一对象。结果,使用任何对象引用修改对象都会修改实际对象,并且更改将反映在所有对象引用中。

例:

以下代码段显示了一个示例:

const obj = { name: 'John' };
const obj2 = obj;

obj2.name = 'Mike';

console.log(obj);

在上面的代码示例中,obj2.name已更改,但是obj在最后一行中记录,该name属性的值更改为“ Mike”。这是因为obj和都obj2指向内存中相同的确切对象

为了理解问题中的代码,您需要牢记上面的代码示例并理解其工作方式。

以下是解释removeLast()方法工作原理的步骤

  1. 检查列表是否为空。如果是,请从函数返回,因为没有要删除的内容。

    if (!this.head) {
       return;
    }
    
  2. 如果链接列表中只有一个节点,请head指向null该函数,然后从该函数返回。

    if (!this.head.next) {
       this.head = null;
       return;
    }
    
  3. 现在,我们需要遍历链表以到达链表中的倒数第二个节点。当我们到达倒数第二个节点时,我们可以next将倒数第二个节点的指向null这将删除对最后一个节点的任何引用。

    // create a temporary pointer to the first node 
    // in the linked list       
    let previous = this.head;
    
    // create a temporary pointer to the second node
    // in the linkedlist. "this.head.next" could be "null"
    // if there's only 1 node in the linkedlist 
    let node = this.head.next;
    
    // traverse the linkedlist until "node.next" is not "null"
    while (node.next) { 
       // point "previous" to the node that is pointed
       // to by "node" variable
       previous = node;
    
       // update "node" variable to point the node that
       // is next to the node that is currently pointed to by "node"
       // variable
       node = node.next;
    }
    
  4. 第三步之后,previous将指向链表中的倒数第二个节点。最后,next倒数第二个节点的设置为null这样做将删除最后一个节点。

    previous.next = null;
    

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在python中的函数内部访问和编辑变量

javascript对象-如何在类函数中调用类变量

如何在PHP类函数中设置变量

如何在类函数中修改变量

如何在装饰器函数中访问类变量

如何在主函数中访问订户类的公共变量?

如何在python类中的其他函数中定义(变量)的函数内使用变量?

如何在 Visual Studio 编辑器中突出显示子类中的类变量

如何在Sitecore中编辑CSS类

如何在函数中使用类变量?

如何在派生类构造函数中初始化基类成员变量?

如何在继承的类中设置父类变量的值,然后在继承的函数中使用它?

如何在python中的类中的任何函数中创建一个可访问的变量?

如何在与声明变量不同的文件中编辑变量?

Python PyQt-多次运行函数时如何在另一个函数中编辑变量

如何访问Promise then()函数中的类变量?

如何在一个类中的另一个函数中更新变量?

如何在Java中编辑类类型数组中的元素?

如何在模板函数或类中实例化包含类型的容器的变量?

如何在C ++异常类析构函数中释放变量

我应该如何在这个类中的函数之间传递变量?

如何在类构造函数中为Map类型变量分配默认值?

Angular 2:如何在Observable映射调用的函数中引用类变量

如何在php中的类/函数/对象中使用外部变量

如何在类中使用main从函数中打印变量,帮助理解OOP C ++

如何在Javascript的类构造函数中访问分配给对象的变量名?

Codeigniter:如何在一个类中访问多个其他函数的多个变量?

如何在非变量模板类中形成可变参数模板函数?

如何在Swift中测试变量的类?

TOP 榜单

热门标签

归档