单链表 例题

一个是Data Value,一个是下一个数值的位置 

 

题目里要将x插入到第k个插入的数后面,第k个插入的数下标是k - 1,所以调用的时候是add(k - 1, x),remove(k-1)。如果你一开始将idx=1(初始化),那么下标和k就统一了,就不需要再k-1了

m=int(input())
head=-1 # head所在位置
ne=[-1]*100000  # 指针 next
idx=0
e=[None]*100000 # 数值

def add_to_head(x):   # 在head和第一个点之间插入
    global idx,ne,head
    e[idx]=x  # 在idx处存储x值
    ne[idx]=head # 指针指向head对应的值
    head=idx # head指向idx
    idx+=1

def add(k,x): # 将x插入到下标为k的点的后面
    global idx,ne,head
    e[idx]=x # 在idx处存储x值
    ne[idx]=ne[k] # idx的指针指向k的下一个位置
    ne[k]=idx # k的下一个位置为idx
    idx+=1

def remove(k): # 把k后面的点删掉
    global ne,head
    if k==-1:
        head=ne[head] #head的下一个为head
    else: ne[k]=ne[ne[k]] # ne[k]再ne一次

while m:
    m-=1
    tmp=input().split()
    if tmp[0]=='H': add_to_head(int(tmp[1]))
    if tmp[0]=='D': remove(int(tmp[1])-1)
    if tmp[0]=='I': add(int(tmp[1])-1,int(tmp[2]))
i=head
while(~i):
    print(e[i],end=' ')
    i=ne[i]

 

参考:【问题解答】用数组模拟单链表_吹往北方的风的博客-CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值