• 智能AI问答!更聪明、更完整、原创作!
  • 一款基于GPT的超级AI机器人,可以回答问题、聊天、创作、写文案!

使用链表和指针以及total函数统计学生总数

发布于 2023-12-16 01:21:38

使用链表来管理学生数据,我们可以定义一个链表节点来代表每个学生,并且定义 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 函数来计算链表中的节点数量,即学生总数。最后,我们使用一个循环来释放链表中所分配的内存。

0 条评论

发布
问题

在线
客服