我不明白这个函数是如何工作的,这是链表实现中的reverse()函数

问题描述 投票:0回答:1

这里是实现单链表的代码:

class LinkedList {
  constructor(value) {
    this.head = {
      value: value,
      next: null,
    };
    this.tail = this.head;
    this.length = 1;
  }

  append(value) {
    const newNode = {
      value: value,
      next: null,
    };
    this.tail.next = newNode;
    this.tail = newNode;
    this.length++;
    return this;
  }

  prepend(value) {
    const newNode = {
      value: value,
      next: null,
    };
    newNode.next = this.head;
    this.head = newNode;
    this.length++;
    return this;
  }

  reverse() {
    if (!this.head.next) {
      return this.head;
    }
    let first = this.head;
    this.tail = this.head;
    let second = first.next;

    while (second) {
      const temp = second.next; //third
      second.next = first;
      first = second;
      second = temp;
    }

    this.head.next = null;
    this.head = first;
    return this.printList();
  }

}

我需要有人帮助我理解这个

reverse()
功能,我尝试了很多次来理解它,我也尝试过使用ChatGPT哈哈。

reverse()
函数运行时间为O(n)。

javascript data-structures linked-list big-o singly-linked-list
1个回答
0
投票

1-->2--->3--->4

第一个= 1-->

第二个 = 2-->3-->

一会儿 1°) 温度 = 3-->4

第二个.下一个 = 1-->2-->

第一个 = 2-->1-->

第二= 3-->

2°) 温度=4

第二个.next=2-->1-->

第一个= 3-->2-->1-->

第二 = 4 3度) 温度=空

第二个.下一个 = 3-->2-->1-->

第一个 = 4-->3-->

第二个=空

4°)外出

下一个 1 = 空

头 = 4-->3-->2-->1

© www.soinside.com 2019 - 2024. All rights reserved.