有一个带头结点的单链表,头指针为 head ,编写一个算法 count . list ()计算所有数据域为 X 的结点的个数(不包括头结点)。 请给出代码并附上运行结果
时间: 2024-09-30 19:14:59 浏览: 45
你可以使用遍历链表的方式来解决这个问题。首先创建一个变量`count`初始化为0,然后遍历链表,如果当前节点的数据域等于`X`,则将`count`加一。以下是使用Python的解决方案:
```python
def count_list(head, X):
if not head: # 如果链表为空
return 0
current = head.next # 跳过头节点
count = 0 # 初始化计数器
while current:
if current.data == X: # 如果当前节点的数据域等于X
count += 1
current = current.next # 移动到下一个节点
return count
# 示例:
# 假设链表结构如下:
# head -> Node(1) -> Node(2) -> Node(X) -> Node(3) -> Node(4)
head = ListNode(1) # 假设ListNode是一个有data属性的节点类
head.next = ListNode(2)
head.next.next = ListNode(X) # 数据域为X的节点
head.next.next.next = ListNode(3)
head.next.next.next.next = ListNode(4)
count = count_list(head, X) # 当X等于链表中某个数据域时,会返回对应的计数
print(f"在链表中有 {count} 个数据域为 {X} 的节点.")
```
在这个示例中,你需要根据实际链表的结构传入适当的`head`和`X`值。运行结果将会是你想要找的满足条件的节点个数。
阅读全文