python模拟链表插入和删除

本文介绍了一种使用Python实现链表插入和删除的方法。通过定义appendleft和appendright函数,可以在指定元素的左侧或右侧插入新元素;通过dele函数,可以删除链表中的指定元素。代码示例展示了如何在链表中进行这些操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

模拟链表插入和删除

语言:python

代码:

def appendleft(r,d):
    # 思路:先在最后插入,然后找到标志物的位置,把最后一个位置的right设为标志物的位置,把标志物左边的right改成最后一个位置
    # 数据插入到最后
    data.append(d)
    # t从0开始,这样可以保证遍历到全部。
    t=0
    # 判断的是第t位置的right的data是否等于标志物。
    while data[right[t]]!=r:
        t=right[t]
    # 如果等于了,就代表此时t是标志物的前一个位置。
    # 所以这里插入的是right[t]
    right.append(right[t])
    # 然后right[t]再修改为最后一个位置。
    right[t]=len(right)-1


def appendright(r,d):
    # 和往左插入唯一的不同就是,向右插入中标志物的位置,就是向左插入中标志物左边的位置。
    data.append(d)
    t=1
    while data[t]!=r:
        t=right[t]
    right.append(right[t])
    right[t]=len(right)-1


def dele(d):
    # 思路:要删除的数即为标志物,将标志物的前一个的right设为标志物的right即可。
    # 还是查找标志物的前一个
    t=0
    while data[right[t]]!=d:
        t=right[t]
    # 将它的right设为他的right的right
    right[t]=right[right[t]]
    # 此方法会造成空间的浪费。right数组的大小,会随着插入次数的增多而逐渐增大,而在删除元素之后却不会减小,data也是。


def pri():
    t=1
    while t!=0:
        print(data[t],end=" ")
        t=right[t]
    print()


# 初始data,0不输出
data=[0,2,3,4]
# 初始right数组,0位置为1方便遍历,然后1位置开始每个都指向它右边一个数的位置。
right=[1,2,3,0]
# 在4左边插入一个5
appendleft(4,5)
pri()
# 在5左边插入一个6
appendleft(5,6)
pri()
# 在5左边插入一个7
appendleft(5,7)
pri()
# 在7右边插入一个8
appendright(7,8)
pri()
# 在3右边插入一个9
appendright(3,9)
pri()
# 删除9
dele(9)
pri()
# 删除3
dele(3)
pri()
# 删除4
dele(4)
pri()
print(right)
print(data)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值