华为机试真题 c++ 实现【单向链表中间节点】
时间: 2023-12-02 07:00:30 浏览: 130
要实现单向链表中的中间节点,可以使用快慢指针的方法来解决。具体步骤如下:
1.定义一个链表节点类Node,包含两个成员变量,一个是指向下一个节点的指针next,一个是节点的值value。
2.创建一个快指针fast和一个慢指针slow,并将它们都指向链表的头节点。
3.使用循环遍历链表,每次让快指针fast向后移动两步,慢指针slow向后移动一步,直到快指针fast到达链表末尾或者fast.next为空。
4.当快指针fast到达链表末尾时,慢指针slow就会指向链表的中间节点。
5.返回慢指针slow所指向的中间节点。
以下是代码示例:
```
class Node:
def __init__(self, value):
self.value = value
self.next = None
def find_middle_node(head):
if head is None:
return None
fast = head
slow = head
while fast.next and fast.next.next:
fast = fast.next.next
slow = slow.next
return slow
# 测试代码
# 创建链表
head = Node(1)
node2 = Node(2)
node3 = Node(3)
node4 = Node(4)
node5 = Node(5)
head.next = node2
node2.next = node3
node3.next = node4
node4.next = node5
middle_node = find_middle_node(head)
print(middle_node.value) # 输出3
```
通过上述的步骤和代码,可以实现找到单向链表中的中间节点。
阅读全文