【发布时间】:2019-01-19 06:02:42
【问题描述】:
我正在尝试解决这个涉及链表的问题。对链表进行分区,使小于分区的值首先出现,然后是等于或大于分区的值。
例子:
input: 90 -> 30 -> 40 -> 50 -> 100 -> 40
partition: 50
output: 30 -> 40 -> 40 -> 50 -> 100 -> 90
小于分区(50)的所有节点都在所有大于分区(50)的节点之前。
function partitionLl(node) {
let list = {
"head": {
"data": 90,
"next": {
"data": 30,
"next": {
"data": 40,
"next": {
"data": 50,
"next": {
"data": 100,
"next": {
"data": 40,
"next": {
"data": 15,
"next": {
"data": 90,
"next": {
"data": 200,
"next": {
"data": 90,
"next": {
"data": 10,
"next": {
"data": 90,
"next": null
}
}
}
}
}
}
}
}
}
}
}
}
}
let test;
let current = list.head;
let p1 = {
data: null,
next: null
};
let p2 = current;
while (current !== null) {
if (current.data < node) {
p1 = current;
p1 = p1.next;
} else {
p2 = current;
p2 = p2.next;
}
current = current.next;
}
console.log(p1)
console.log(p2)
}
partitionLl(50)
这是我拥有的代码,我想要获得的列表在循环中非常棒,它有我需要的列表。问题是我需要在循环完成时附加这些列表(p1 和 p2),但是在 while 循环之外,变量记录的内容完全不同且不准确。
当前变量在循环内部和外部都被跟踪。不知道为什么会这样,或者可能有什么样的范围循环会导致这种情况。我将如何访问循环之外的值?
【问题讨论】:
-
请同时添加想要的结果。最后一个节点应该去哪里?你想得到一棵树而不是一个链表吗?
-
是的,刚刚编辑了评论。
-
“记录完全不同的东西”是什么意思?你能告诉我们你得到了什么吗?
-
为什么第一个 grreter 值出现在列表末尾?为什么不维持秩序?
标签: javascript algorithm loops while-loop linked-list