问题描述
如何访问链表中的数据?主要是我有两个具体问题。我是 Python 初学者,刚刚学习链表,如果这看起来像一个愚蠢的问题,请耐心等待。
目前,除了使用str方法打印之外,我无法访问节点中的信息。
解决方法
通常你只需要定义一个递归函数。假设您的链表定义如下:
tinymce.init({
selector: 'textarea',// change this value according to your HTML
plugins: 'pageembed',menubar: 'view',toolbar: 'pageembed'
});
现在遍历列表并找到具有特定值的节点相当容易:
class Node:
def __init__(self,val):
self.val = val
self.next = None
同样可以修改这个函数来检查def find(node: Node,search_val):
if not node:
return None
else:
if node.val == search_val:
return node
else:
return find(node.next,search_val)
是否是字典,是否有某个key。
问题 2 的措辞很奇怪。节点不能是字典。它必须是某种形式的 Node 类。它可以包含字典,但不能是字典。
,链表中的数据是通过遍历链表来访问的。您需要从头开始,检查其中包含的数据是否是您要查找的数据,如果不是,则遍历到下一个节点。
因此,对您的链表实现做一些假设:
- 您需要从头节点开始遍历您的列表,直到找到所需的数据属性值。
如果所需的数据属性值不在链表中,您可以使用返回 None 的函数执行此操作。我假设您的链表节点有一个方法 next_node,如果它是尾部实例,则返回 None。
def traverse_to_desired_node(head : LinkedListNode,desired : Any):
node = head
while node.data != desired:
node = node.next_node()
if node is None:
return None
return node
- 如果链表中的每个节点都是字典,那意味着你的链表实际上是一个嵌套字典,每个嵌套字典都包含在一个键、'next' 或其他东西中,并且尾部有 None 作为 'next' 的值'.
类似的方法也行:
def traverse_to_desired_node(head : dict,desired : str):
node = head
while desired not in node:
node = node['next']
if node is None:
return None
return node
现在,无论采用哪种方法,您都可以为节点设置一个变量:
node = traverse_to_node(head,'desired')
那么,如果是类实例,就可以访问该节点的数据属性:
print(node.data)
或者,如果是字典,访问所需的键:
print(node['desired'])