gpt4 book ai didi

javascript - 从单链表中删除元素(javascript)

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:15:20 24 4
gpt4 key购买 nike

我正在做一个 CodeFights 问题,试图从一个值为 k 的单向链表中删除元素。

下面是我所拥有的(l 是列表,k 是值):

function removeKFromList(l, k) {
//figure out the head of the new list so we can reference it later
var head = l;

while (head.value === k){
head = head.next;
}

var node = head;
var temp = null;

while (node && node !== null) {
if (node.next.value === k){
temp = node.next.next;
node.next.next = null;
node.next = temp;
}
node = node.next;
console.log("+++", head)
}

console.log("---", head)
}

CodeFight 测试转换为 3 -> 1 -> 2 -> 3 -> 4 -> 5。最终结果应该是 1 -> 2 -> 4 -> 5。但是我的“---”控制台日志不断返回“空”(根据 CodeFights 控制台)。

我的“+++”控制台日志在每个循环中返回正确的头部和元素。

我一直在努力解决这个问题,知道这里缺少什么吗?

最佳答案

如果删除第一个节点,则需要返回列表。

然后您需要一个循环,用于在未找到值时获取下一个 not。

最后您需要检查最后一个节点是否存在,如果找到该值,则将下一个节点分配给最后一个 next 属性。

function removeNode(list, value) {
var node = list,
last;

if (node && node.value === value) {
return node.next;
}

while (node && node.value !== value) {
last = node,
node = node.next;
}
if (last && node.value === value) {
last.next = node.next;
}
return list;
}

var list = { value: 1, next: { value: 2, next: { value: 3, next: { value: 4, next: { value: 5, next: { value: 6, next: { value: 7, next: null } } } } } } };

list = removeNode(list, 5);
console.log(list)

list = removeNode(list, 1);
console.log(list)

list = removeNode(list, 7);
console.log(list)
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 从单链表中删除元素(javascript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47732021/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com