AcWing 826. 单链表-golang
原题链接
简单
作者:
渲染
,
2024-04-01 21:48:32
,
所有人可见
,
阅读 1
package main
import (
"fmt"
"os"
"bufio"
)
const N int = 100010
var a = [N]int{}
var b = [N]int{}
var head int
var idx int
var reader = bufio.NewReader(os.Stdin)
var n int
func init(){
head = -1
idx = 0
}
func insetTohead(x int){
a[idx] = x
b[idx] = head
head = idx
idx ++
}
func add(x ,k int){
a[idx] = x
b[idx] = b[k]
b[k] = idx
idx ++
}
func remove(k int){
b[k] = b[b[k]]
}
func main(){
fmt.Fscan(reader,&n)
for ;n > 0;n--{
var s string
fmt.Fscan(reader,&s)
switch s{
case "H":
var x int
fmt.Fscan(reader,&x)
insetTohead(x)
case "D":
var k int
fmt.Fscan(reader,&k)
if k == 0{
head = b[head]
}else{
remove(k-1)
}
case "I":
var k , x int
fmt.Fscan(reader,&k,&x)
add(x,k-1)
}
}
for i:=head;i!=-1;i = b[i]{
fmt.Printf("%d ",a[i])
}
}