3.编写算法,在双向链表中查找值为x的结点,要求分别用从前往后和从后往前两种方法实现
时间: 2024-10-27 11:06:43 浏览: 8
在双向链表中查找值为 `x` 的节点,可以使用两种不同的遍历策略:
1. **从前往后遍历** (顺序查找):
- 首先,我们初始化两个指针 `current` 和 `prev`,初始时 `current` 指向链表头,`prev` 为空。
- 然后进入循环,检查当前节点 `current.data` 是否等于目标值 `x`。如果相等,返回当前节点;若不等,将 `current` 向后移动。
- 如果遍历到链表尾部还没有找到,说明 `x` 不在链表中,返回 null 或者一个特殊的结束标志。
```python
def search_from_front(head, x):
current = head
while current is not None and current.data != x:
current = current.next
return current
```
2. **从后往前遍历** (反向查找):
- 这里我们同样初始化两个指针,不过这次 `current` 初始指向链表尾部,`prev` 指向链表头。
- 我们逆序地检查节点,当遇到值等于 `x` 的节点时停止,并返回该节点。
- 当 `current` 变为 None 时,表示没有找到匹配的节点。
```python
def search_from_back(head, x):
current = head
prev = None
while current is not None and current.data != x:
prev = current
current = current.prev
return prev if prev else None
```
阅读全文