假设有一带头结点的单链表,结点中存放整型数据,请编写函数查找单链表中结点值大于x的结点个数并输出C语言代码
时间: 2024-09-19 20:16:41 浏览: 43
当然,为了查找单链表中结点值大于给定值 `x` 的结点个数,我们可以定义一个遍历链表的函数。这里有一个简单的 C 语言函数示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 结构体表示链表节点
typedef struct Node {
int data; // 数据域
struct Node* next; // 指针域,指向下一个节点
} Node;
// 创建新节点
Node* createNode(int value) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = value;
newNode->next = NULL;
return newNode;
}
// 遍历链表计数大于 x 的节点
int countNodesGreaterThanX(Node* head, int x) {
int count = 0; // 初始化计数器
Node* current = head;
while (current != NULL) {
if (current->data > x) {
count++;
}
current = current->next;
}
return count;
}
// 示例用法
void printList(Node* head) {
Node* temp = head;
while (temp != NULL) {
printf("%d -> ", temp->data);
temp = temp->next;
}
printf("NULL\n");
}
int main() {
// 假设已有的链表构造
Node* listHead = createNode(5); // 链表头节点,值为5
listHead->next = createNode(3); // 第二个节点,值为3
listHead->next->next = createNode(7); // 第三个节点,值为7
listHead->next->next->next = createNode(2); // 第四个节点,值为2
int x = 4; // 查找值大于这个值的节点数量
int count = countNodesGreaterThanX(listHead, x);
printf("Number of nodes greater than %d: %d\n", x, count);
printList(listHead); // 打印整个链表以供检查
return 0;
}
```
这个程序首先定义了一个链表节点结构,然后创建了示例链表。`countNodesGreaterThanX` 函数遍历链表,每当遇到一个值大于 `x` 的节点,就增加计数器。最后,主函数调用这两个函数并打印结果。
阅读全文