题解 | #从单向链表中删除指定值的节点#
从单向链表中删除指定值的节点
https://www.nowcoder.com/practice/f96cd47e812842269058d483a11ced4f
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void (async function () {
// Write your code here
let str;
while ((line = await readline())) {
str = line;
}
// 将输入以空格分割为数组
let arrinput = str.split(" ");
// 获取要删除的节点元素
let x = arrinput[arrinput.length - 1];
// 获取所有的节点值数组arrnum,slice(),截取的内容前包括,后不包括,即[a,b)
let arrnum = arrinput.slice(2, arrinput.length - 1);
// console.log(arrnum);
// 定义一个新数组arrnumsort,对上面的arrnum每两个为一组进行遍历,进行节点排列
let arrnumsort=[];
for(let i=0;i<arrnum.length;i+=2){
/* 2个节点为一组,分两种情况进行讨论:
1、原数组有第二个节点,那么只需要将第一个节点,放置到原数组这个节点之后
2、原数组无这个节点,那么依次向原数组添加第二个节点、第一个节点即可
*/
if(arrnumsort.includes(arrnum[i+1])){
arrnumsort.splice(arrnumsort.indexOf(arrnum[i+1])+1,0,arrnum[i])
}else{
arrnumsort.push(arrnum[i+1]);
arrnumsort.push(arrnum[i]);
}
}
// 对排列好的节点数组,按要求删除指定的节点元素
arrnumsort.splice(arrnumsort.indexOf(x),1);
console.log(arrnumsort.join(' '))
})();