javascript - 在 JavaScript 中反转链表的策略

标签 javascript linked-list singly-linked-list

我只是在一个简单的面试问题上苦苦挣扎:请反转单向链表。

虽然我未能及时提供工作答案以挽救采访,但我后来想出了一个解决方案。

我的解决方案是否正确?你会如何用 Big-Oh 分析这个?是否有更有效的方法来反转单向链表?

// reverse a linked list

var reverseLinkedList = function(linkedlist) {
  var node = linkedlist;
  var previous = null;

  while(node) {
    // reverse pointer
    node.next = previous;
    // increment previous to current node
    previous = node;
    // increment node to next node
    if (node.next){
      node = node.next
    } else {
      node = null;
    }
  }
}

注意:在我搜索类似帖子时,我确实找到了 one example在 JavaScript 中。我想知道我的代码是否可行(没有 temp 变量)。谢谢。

最佳答案

您的代码存在一些问题。这应该说清楚了。

// reverse a linked list  
var reverseLinkedList = function(linkedlist) {
  var node = linkedlist;
  var previous = null;

  while(node) {
    // save next or you lose it!!!
    var save = node.next;
    // reverse pointer
    node.next = previous;
    // increment previous to current node
    previous = node;
    // increment node to next node or null at end of list
    node = save;
  }
  return previous;   // Change the list head !!!
}
linkedlist = reverseLinkedList(linkedlist);

关于javascript - 在 JavaScript 中反转链表的策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23278017/

相关文章:

javascript - 为什么我不能在 Node 中运行此 MongoDB 查询,但它可以在社区指南针中运行?

javascript - 指向被单击元素的 jQuery 指针

c++ - 使用类递归创建链表,C++

c - 链表数组在 C 中无法正常工作

c++ - 链表段错误

c - 链表删除节点。 Free(pointer) 在下一个节点打印 0

javascript - d3.js 如何区分 X 轴和 Y 轴?

javascript - 使用 Chart.renderer.text 渲染表格

java - 我可以使用 java.util.LinkedList 构造循环/循环链表吗?

java - 返回类的副本