使用链表来管理学生数据,我们可以定义一个链表节点来代表每个学生,并且定义 total
函数来遍历链表并统计节点数量。以下是一个使用链表和指针以及 total
函数统计学生总数的C语言程序示例:
#include <stdio.h>
#include <stdlib.h>
// 定义学生节点结构体
typedef struct StudentNode {
char name[50];
int student_id;
float score;
struct StudentNode *next; // 指向下一个节点的指针
} StudentNode;
// 函数声明
int total(StudentNode *head);
// 创建新的学生节点
StudentNode* createStudentNode(const char* name, int id, float score) {
StudentNode* newNode = (StudentNode*)malloc(sizeof(StudentNode));
if (newNode) {
strcpy(newNode->name, name);
newNode->student_id = id;
newNode->score = score;
newNode->next = NULL;
}
return newNode;
}
int main() {
// 创建链表头节点
StudentNode *head = NULL;
StudentNode *temp;
// 添加学生节点到链表
temp = createStudentNode("张三", 1001, 85.5);
temp->next = head;
head = temp;
temp = createStudentNode("李四", 1002, 92.0);
temp->next = head;
head = temp;
temp = createStudentNode("王五", 1003, 76.5);
temp->next = head;
head = temp;
// 使用total函数统计学生总数
int student_count = total(head);
printf("学生总数为:%d\n", student_count);
// 清理分配的内存
while (head) {
temp = head;
head = head->next;
free(temp);
}
return 0;
}
// total函数定义,通过遍历链表统计学生总数
int total(StudentNode *head) {
int count = 0;
while (head) {
count++;
head = head->next; // 移动到下一个节点
}
return count;
}
在这段代码中,我们首先定义了一个 StudentNode
结构体,它包含学生信息以及一个指向下一个节点的 next
指针。然后,我们定义了 total
函数来遍历链表并计算节点的数量。
main
函数中创建了一个链表的头节点 head
,并通过 createStudentNode
函数创建新的学生节点并添加到链表的前端。之后,调用 total
函数来计算链表中的节点数量,即学生总数。最后,我们使用一个循环来释放链表中所分配的内存。