链表查询表所有内容通过两个表的id
时间: 2023-08-04 13:12:39 浏览: 43
假设你有两个链表,分别是 A 和 B,每个节点都有一个唯一的 id,你想查询具有特定 id 的节点在哪个链表上出现。
一种简单的方法是遍历链表 A 和 B,查找具有指定 id 的节点。但是,这种方法的时间复杂度是 O(n),其中 n 是链表的长度。如果链表很长,这可能会很慢。
另一种方法是使用哈希表,将每个节点的 id 作为键,链表的名称(A 或 B)作为值。这样,查询具有指定 id 的节点只需要 O(1) 的时间复杂度。你可以遍历链表 A 和 B,将每个节点的 id 和链表名称存储在哈希表中。然后,当需要查询具有特定 id 的节点时,只需在哈希表中查找即可。
以下是一个简单的 Python 代码示例:
```python
class Node:
def __init__(self, id):
self.id = id
self.next = None
def find_node(id, A, B):
table = {}
node = A
while node:
table[node.id] = 'A'
node = node.next
node = B
while node:
table[node.id] = 'B'
node = node.next
return table.get(id)
# 测试
A = Node(1)
A.next = Node(2)
A.next.next = Node(3)
B = Node(4)
B.next = Node(5)
B.next.next = Node(6)
print(find_node(2, A, B)) # 输出 'A'
print(find_node(5, A, B)) # 输出 'B'
```
在这个示例中,我们定义了一个 `Node` 类来表示单链表的节点。`find_node` 函数接受三个参数:要查找的节点 id,链表 A 的头节点和链表 B 的头节点。该函数遍历链表 A 和 B,将每个节点的 id 和链表名称存储在哈希表中。最后,它在哈希表中查找具有指定 id 的节点,并返回其所在的链表名称。