Leetcode中ListNode的Python逻辑

pythonetc

1个回答

写回答

中成

2025-07-09 19:52

+ 关注

etc
etc

Leetcode中ListNode的Python逻辑

ListNode是Leetcode中常见的数据结构之一,用于表示单链表。在Python中,我们可以通过定义一个ListNode类来创建和操作单链表。本文将介绍如何使用Python实现ListNode,并提供一些案例代码来帮助读者更好地理解。

定义ListNode类

首先,我们需要定义一个ListNode类,用于表示单链表中的每个节点。每个节点包含两个属性:值(val)和指向下一个节点的指针(next)。

Python

class ListNode:

def __init__(self, val=0, next=None):

self.val = val

self.next = next

在初始化方法中,我们可以传入一个值和一个指针来创建一个新的节点。如果没有传入任何参数,则默认节点的值为0,指针为空。

创建单链表

要创建一个单链表,我们可以按照节点的顺序连接它们。首先,我们需要创建一个头节点,然后依次创建其他节点,并将它们连接到链表中。最后返回头节点即可。

Python

def createLinkedList(nums):

head = ListNode(nums[0])

cur = head

for i in range(1, len(nums)):

cur.next = ListNode(nums[i])

cur = cur.next

return head

在上述代码中,我们首先创建了一个头节点,然后使用cur变量来表示当前节点,初始时指向头节点。接下来,我们使用循环遍历nums列表,依次创建节点,并将其连接到链表中。最后,返回头节点即可。

遍历单链表

遍历单链表是常见的操作,我们可以通过循环遍历链表中的每个节点,并对其进行相应的操作。下面是一个示例代码,用于遍历并打印单链表中的每个节点的值。

Python

def traverseLinkedList(head):

cur = head

while cur:

print(cur.val)

cur = cur.next

在上述代码中,我们使用cur变量来表示当前节点,初始时指向头节点。然后,我们使用while循环遍历链表,每次迭代打印当前节点的值,并将cur指向下一个节点。当cur为空时,表示遍历结束。

反转单链表

反转单链表是一个常见的问题,可以使用迭代或递归的方式来实现。下面是一个示例代码,用于反转一个单链表。

Python

def reverseLinkedList(head):

prev = None

cur = head

while cur:

next_node = cur.next

cur.next = prev

prev = cur

cur = next_node

return prev

在上述代码中,我们使用prev变量来表示前一个节点,cur变量来表示当前节点,初始时prev为空,cur指向头节点。然后,我们通过迭代的方式遍历链表,每次迭代将当前节点的next指针指向前一个节点,并更新prev和cur的值。当遍历结束时,返回prev节点即可。

本文介绍了如何使用Python实现Leetcode中的ListNode数据结构,并提供了创建、遍历和反转单链表的示例代码。通过掌握这些基本操作,读者可以更好地理解和解决与单链表相关的问题。希望本文对读者有所帮助!

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号