推荐答案
// www.javascriptcn.com code example
class Node:
def __init__(self, data):
self.data = data
self.next = None
def find_node(head, target):
current = head
while current is not None:
if current.data == target:
return current
current = current.next
return None本题详细解读
链表节点的定义
在链表中,每个节点通常包含两个部分:
data:存储节点的值。next:指向下一个节点的指针。
class Node:
def __init__(self, data):
self.data = data
self.next = None查找节点的过程
- 初始化:从链表的头节点
head开始。 - 遍历链表:使用一个指针
current来遍历链表,从头节点开始,依次检查每个节点的data是否等于目标值target。 - 找到目标节点:如果找到
current.data == target,则返回当前节点current。 - 未找到目标节点:如果遍历完整个链表仍未找到目标节点,则返回
None。
def find_node(head, target):
current = head
while current is not None:
if current.data == target:
return current
current = current.next
return None时间复杂度分析
- 时间复杂度:O(n),其中 n 是链表的长度。最坏情况下需要遍历整个链表。
- 空间复杂度:O(1),只使用了常数级别的额外空间。
示例
假设链表为 1 -> 2 -> 3 -> 4,查找值为 3 的节点:
head = Node(1) head.next = Node(2) head.next.next = Node(3) head.next.next.next = Node(4) result = find_node(head, 3) print(result.data) # 输出: 3
在这个例子中,find_node 函数会返回值为 3 的节点。