设计一个算法,通过一趟遍历确定长度为n的单链表中值最小的结点 测试输入: 请输入表L的长度: 5 请输入表La: 5 6 7 3 4 预期输出: 链表L中最小的数据是:3
时间: 2024-12-15 09:20:49 浏览: 69
设计一个算法来寻找长度为 \( n \) 的单链表中值最小的节点,可以采用迭代或递归的方式。这里我们选择迭代方法:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def find_min_node(head):
# 初始化两个指针,一个指向当前节点,另一个指向已找到的最小节点
current = head
min_node = head
while current is not None:
# 如果当前节点的值小于已知最小值,则更新最小节点
if current.val < min_node.val:
min_node = current
# 继续遍历下一个节点
current = current.next
return min_node
# 测试示例
def test():
length = int(input("请输入表L的长度:"))
la_values = list(map(int, input("请输入表La的元素,用空格分隔:").split()))
# 构建链表
L = ListNode(la_values[0])
for i in range(1, length):
L.next = ListNode(la_values[i])
L = L.next
# 找到并打印最小节点
min_val = find_min_node(L)
print(f"链表L中最小的数据是:{min_val.val}")
test()
```
在这个算法中,我们首先创建两个指针`current`和`min_node`,初始时都指向链表头。然后我们在循环中不断遍历链表,如果遇到比当前最小值还小的节点,就更新`min_node`。当遍历结束时,`min_node`就会指向列表中的最小节点。
阅读全文
相关推荐

















