Java、python实现啊哈算法 —— chapter2 链表 模拟链表

使用数组模拟链表操作
该博客介绍了如何使用两个numpy数组来模拟链表,其中一个数组存储节点值,另一个记录节点间的连接。通过输入节点值和节点数量创建链表,并实现插入新节点的功能。代码中展示了从用户输入获取节点值,然后遍历数组找到合适位置插入新节点的过程。

这一部分是用两个数组来模拟链表的功能,一个数组的下标表示节点的编号,下标指向的数字代表链表节点的值。

另一个数组存储的是链表节点之间的关系,数组下标表示某个节点的编号,数组中下标位置的值是以这一下标值为编号的节点的下一个节点的编号。

也有一些抽象,不过把代码实现一遍就清晰很多了

下面上代码:

python:

import numpy as np
def simulation_list():
    data = np.zeros((100,), dtype=int)
    next = np.zeros((100,), dtype=int)
    n = int(input('请输入链表中节点的个数:'))
    for i in range(n):
        data[i] = int(input('输入当前节点的值:')) #将输入的n个节点的值依次保存到数值数组中
        next[i] = i + 1 #数组中下标代表当前节点的编号,下标所指的数组中的值是链表中下一个节点的编号
    next[n - 1] = -1 #最后一个节点的next应该为空
    #下面是插入节点的操作
    num = int(input('请输入要插入的节点值:'))
    data[n] = num #在data数组末尾直接加上添加的节点的数值
    index = 0
    while next[index] != -1: #遍历next数组,找到比插入值大的节点的编号,将新节点插入到这一节点前面
        val = data[next[index]]
        if val > num: #index_next下一节点上的值大于要插入的节点值
            next[n] = next[index]
            next[index] = n
            break
        else:
            index += 1
    t = 0
    while t != -1:
        print(data[t])
        t = next[t]



if __name__ == '__main__':
    simulation_list()
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值