📅  最后修改于: 2023-12-03 15:40:53.494000             🧑  作者: Mango
本程序可以用于围绕给定值对链接列表进行分区,并保持原始顺序。它是用JavaScript编写的,以下是该程序的详细说明。
该程序接受一个链接列表和一个参考值作为参数。它将链接列表分为两个部分,一部分包含小于或等于参考值的链接,另一部分包含大于参考值的链接,并保持它们在原始列表中的顺序。然后,这两个部分将被组合成一个新的链接列表,并返回。
下面是JavaScript代码片段:
function partitionLinkedList(linkedList, referenceValue) {
// 定义两个数组,用于暂存小于或等于参考值的链接和大于参考值的链接
const lessOrEqual = [];
const greater = [];
// 循环遍历链表,并将链接添加到相应的数组中
let currentNode = linkedList.head;
while (currentNode) {
if (currentNode.value <= referenceValue) {
lessOrEqual.push(currentNode.value);
} else {
greater.push(currentNode.value);
}
currentNode = currentNode.next;
}
// 将两个数组组合成一个新的链接列表
const newLinkedList = new LinkedList();
for (let i = 0; i < lessOrEqual.length; i++) {
newLinkedList.append(lessOrEqual[i]);
}
for (let i = 0; i < greater.length; i++) {
newLinkedList.append(greater[i]);
}
// 返回新的链接列表
return newLinkedList;
}
假设我们有一个链接列表如下:
1 -> 4 -> 2 -> 7 -> 5 -> 9
我们想要围绕参考值5对它进行分区。我们可以按如下方式使用该程序:
const linkedList = new LinkedList();
linkedList.append(1);
linkedList.append(4);
linkedList.append(2);
linkedList.append(7);
linkedList.append(5);
linkedList.append(9);
const referenceValue = 5;
const partitionedList = partitionLinkedList(linkedList, referenceValue);
console.log(partitionedList); // 输出:1 -> 4 -> 2 -> 5 -> 7 -> 9
通过使用该程序,我们可以在JavaScript中轻松地对链接列表进行分区,并保持原始顺序。该程序可以在具有链接列表的任何JavaScript应用程序中使用,并提供高效的分区算法。