试编写一个算法,在带头结点的单链表L中统计并返回值为e的元素的个数。要求:(1)写出单链表的类型定义; (2)写出实现以上算法的函数; 算法可用类C 语言描述,适当加上说明,以增加可读性。
时间: 2024-10-15 20:09:43 浏览: 33
耿国华数据结构习题答案.doc
首先,我们需要定义一个单链表节点结构体,包含数据域和指向下一个节点的指针。这里假设`e`是整型,用于存储链表中的元素。
```c
// 单链表节点的定义
typedef struct Node {
int data; // 节点的数据域,存储元素值
struct Node* next; // 指向下一个节点的指针
} ListNode;
```
然后我们可以创建一个函数,名为`countOccurrences`,来统计链表中值为`e`的元素个数:
```c
// 函数 countOccurrences,接收链表头节点指针作为参数
int countOccurrences(ListNode* head, int e) {
int count = 0; // 初始化计数器
ListNode* current = head;
while (current != NULL) { // 遍历整个链表
if (current->data == e) { // 如果当前节点值等于目标值
count++; // 计数器加一
}
current = current->next; // 移动到下一个节点
}
return count; // 返回结果
}
```
这个函数会遍历链表的每个节点,如果发现节点的`data`属性等于给定的目标值`e`,则计数器加一。最后返回计数器的值,即满足条件的元素个数。
阅读全文