c语言:现有nn个结点(编号为从1到n),以及链表的第一个结点的编号,求这条链表上的结点个数。
时间: 2024-03-23 13:38:30 浏览: 21
可以使用链表遍历的方式求解,从第一个结点开始,一直遍历到链表的末尾,每经过一个结点就将计数器加1。当遍历到链表的末尾时,计数器的值就是链表上的结点个数。
以下是C语言的代码实现:
```c
#include<stdio.h>
typedef struct Node {
int data; // 结点的数据
struct Node *next; // 指向下一个结点的指针
} Node;
int getNodeCount(int n, Node *head) {
int count = 0;
Node *p = head; // 从第一个结点开始遍历
while(p != NULL) { // 遍历到链表末尾
count++; // 计数器加1
p = p->next; // 遍历下一个结点
}
return count;
}
int main() {
int n = 5; // 结点个数
Node nodes[n]; // 创建结点数组
// 初始化结点数据
for(int i = 0; i < n; i++) {
nodes[i].data = i + 1;
nodes[i].next = (i == n - 1) ? NULL : &nodes[i+1];
}
Node *head = &nodes[0]; // 链表的第一个结点
int count = getNodeCount(n, head); // 求链表上的结点个数
printf("链表上的结点个数为: %d\n", count);
return 0;
}
```
在上面的代码中,我们首先创建了一个包含5个结点的链表,然后求出链表上的结点个数并输出结果。