python--Python list转为链表

本文介绍了如何将Python中的list转换为链表结构,通过代码示例详细解释了转化过程,并提供了相应的数据结构示意图。

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

代码即注释如下
import sys
import json


class ListNode:
    """
    定义一个节点,包括value 和next指针,指向下一个node
    """

    def __init__(self, x):
        self.val = x
        self.next = None


def stringToIntegerList(input):
    return json.loads(input)


def stringToListNode(input):
    # Generate list from the input
    numbers = stringToIntegerList(input)

    # Now convert that list into linked list
    dummyRoot = ListNode(0)
    ptr = dummyRoot  # 3.复制一个实例对象(可变变量,ptr属性变,dummyRoot 也会变,ptr赋值变,dummyRoot 不变)
    for number in numbers:  # [1,2,3]
        ptr.next = ListNode(number)  # 4. ListNode(val =0 ,next=ListNode(val =1 ,next=None))
        ptr = ptr.next  # 5. ptr=ListNode(val=1 ,next=None)
        # 第一层: dummyRoot: ListNode(val =0 ,next=ListNode(val =1 ,next=None))
        # 第二层: dummyRoot: ListNode(val =0 ,next=ListNode(val =1 ,next=ListNode(val =2 ,next=None)))

    ptr = dummyRoot.next  # 最后 ptr在dummyRoot的基础上去掉了val=0
    return ptr


def prettyPrintLinkedList(node):
    while node and node.next:
        print(str(node.val) + "->", end='')
        node = node.next

    if node:
        print(node.val)
    else:
        print("Empty LinkedList")


def main():
    def readlines():
        for line in sys.stdin:
            yield line.strip('\n')

    lines = readlines()  # 1.获取一个生成器
    while True:
        try:
            line = next(lines)  # 2.暂停代码, 通过next()获取生成输入的字符串列表
            node = stringToListNode(line)
            prettyPrintLinkedList(node)
        except StopIteration:
            break


if __name__ == '__main__':
    main()
pt结构如下图

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值