请设计一个算法,查找一个带头结点的单链表L中第i个数据结点的位置,若存在,则返回指向该结点的指针,若不存在,则返回NULL。
时间: 2024-11-03 21:18:19 浏览: 19
【数据结构作业二】写出单链表结点的结构体类型定义及查找、插入、删除算法,并以单链表作存储结。。。 定义线性表节点的结构.pdf
这个问题可以使用迭代或者递归的方式解决。这里我将提供一种简单的迭代算法:
1. 首先创建一个变量`current`并将其初始化为头节点`head`,然后设置一个计数器`position`为0。
2. 当`position`小于目标位置`i`时,循环执行以下操作:
a. `position++`: 计数器加一。
b. `current = current.next`: 将当前节点更新为当前节点的下一个节点。
3. 当`position`等于`i`时,说明找到了目标节点,返回`current`。如果遍历结束后还没有找到,那么链表中不存在第`i`个元素,返回`NULL`。
以下是伪代码形式:
```python
def find_node(head, i):
current = head
position = 0
while position < i and current is not None:
current = current.next
position += 1
if current is None:
return None
else:
return current
```
阅读全文