javascript - 在 JavaScript 中反转链接列表会覆盖 this.head 并且不会更新
问题描述
不确定函数 reverseLinkedList 中出了什么问题。
我正在尝试反转链接列表,而我所采取的步骤似乎适用于 leetcode/hackerrank 等在线评委。当然,在创建链接列表时默认结构是不同的。
class Node{
...
}
class LinkedList{
constructor(){
this.head = null;
this.size = 0;
};
insert(data){
this.head = new Node(data, this.head);
this.size++;
};
printElements(){
let current = this.head;
while(current){
console.log(current.data)
current = current.next;
}
};
reverseLinkedList(){
let prev = null;
let current = this.head;
let temp;
while(current){
temp = current.next;
current.next = prev;
prev = current;
current = temp;
}
}
}
const ll = new LinkedList();
ll.insert(1);
ll.insert(12);
ll.insert(6);
ll.reverseLinkedList();
ll.printElements();
尝试通过 leetcode/hackerrank 解决同样的问题,效果很好。我不确定为什么会发生这种情况。
解决方案
您缺少将新节点设置.head
为前最后一个节点:
reverseLinkedList() {
let prev = null;
let current = this.head;
while (current) {
const temp = current.next;
current.next = prev;
prev = current;
current = temp;
}
this.head = prev;
//^^^^^^^^^^^^^^^^^
}
推荐阅读
- swift - SwiftUI在子视图确认后从视图执行方法
- python - keras_vggface:没有名为“keras.engine.topology”的模块
- c# - C# Linq 查询错误转换为 RavanDB 中的 RQL
- flutter - 行内容器颤动
- java - 将json文件的内容上传到数组
- macos - Expo CLI 安装后需要安装 (macOs)
- machine-learning - 如何为预训练模型编写评估函数并指定数据加载器?
- javascript - 无论如何我可以在使用 papaparse 将 json 转换为 csv 时连续获取标题
- java - 即使 Activity 在后台,如何显示 AlertDialog?
- laravel - 如何在 Vue.js 中对我的数据的输入应用用户过滤器?