AcWing 826. 单链表 ( JavaScript )
原题链接
简单
作者:
gaobowen
,
2019-11-19 12:39:39
,
所有人可见
,
阅读 766
let head = -1, idx = 0;// idx 即将要使用的位置
let val = new Array(100010);
let next = new Array(100010);
let addHead = x => {
val[idx] = x; next[idx] = head; head = idx++;
}
let insert = (k, x) => {
val[idx] = x; next[idx] = next[k]; next[k] = idx++;
}
let remove = k => {
next[k] = next[next[k]];
}
let buf = '';
process.stdin.on('readable', function () {
let chunk = process.stdin.read();
if (chunk) buf += chunk.toString();
});
let getInputArgs = line =>
line.split(' ').filter(s => s !== '').map(x => parseInt(x));
process.stdin.on('end', function () {
let m = 0;
buf.split('\n').forEach(function (line, lineIdx) {
if (lineIdx === 0) {
let a = getInputArgs(line);
m = a[0];
} else if (lineIdx <= m) {
switch (line[0]) {
case 'H': {
let arr = getInputArgs(line.slice(1));
addHead(arr[0])
break;
}
case 'I': {
let arr = getInputArgs(line.slice(1));
insert(arr[0]-1, arr[1]);
break;
}
case 'D': {
let arr = getInputArgs(line.slice(1));
if(arr[0] <= 0) head = next[head];
else remove(arr[0]-1)
break;
}
}
if (lineIdx === m){
let result = []
for (let i = head; i !== -1; i = next[i]) {
result.push(val[i]);
}
console.log(result.join(' '));
}
}
});
});