如何在python中创建链表

z8dt9xmd  于 4个月前  发布在  Python
关注(0)|答案(4)|浏览(83)

我试图解决一个链表编码的挑战在python中。我只给出了以下类来创建一个链表

# Definition for singly-linked list.
class ListNode(object):
    def __init__(self, x):
        self.val = x
        self.next = None

字符串
我可以创建一个类似这样的链表

x = ListNode(1)
x.next = ListNode(4)
x.next.next = ListNode(5)


然而,我如何迭代地创建(在for循环内)

7xzttuei

7xzttuei1#

你需要两个“指针”来记住列表的头和尾。头被初始化一次。你最终会用它来访问整个列表。每次你添加另一个节点时,尾都会改变:

data = [5, 1, 7, 96]
tail = head = ListNode(data[0])
for x in data[1:]:
    tail.next = ListNode(x) # Create and add another node
    tail = tail.next # Move the tail pointer

字符串

luaexgnf

luaexgnf2#

你可以这样做:

arr = [1,4,5]
for i in arr:
    x = ListNode(i)
    x = x.next

字符串
但是现在x将变成None。因为没有其他东西可以跟踪,所以不能打印元素。
您可以通过在循环之间打印x.val的值来验证这一点:

arr = [1,4,5]
for i in arr:
    x = ListNode(i)
    print(x.val)
    x = x.next


产出:

1
4
5

xuo3flqw

xuo3flqw3#

你可以在构造函数中添加一个next参数:

class ListNode(object):
    def __init__(self, x, next=None):
        self.x = x
        self.next = next

head = None
for x in [5, 1, 7, 96]:
    head = ListNode(x, next=head)

# Linked list looks like:
# (96) -> ( 7) -> ( 1) -> ( 5) -> None

字符串

vmpqdwk3

vmpqdwk34#

dummy = ListNode()  
prev = dummy
for val in arr:  
    node = ListNode(val)  
    prev.next = node  
    prev = node

字符串
dummy.next-指向创建的链表的第一个元素的链接

相关问题