pta c语言 建立学生信息链表
时间: 2025-01-02 17:42:16 浏览: 20
### C语言实现学生信息链表创建
#### 定义结构体
为了管理学生信息,定义一个`struct Student`来保存学生的姓名、成绩和其他可能的信息。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义学生节点结构体
typedef struct Student {
char name[50];
int score;
struct Student* next;
} Student;
```
此部分代码初始化了一个名为 `Student` 的结构体用于储存学生的名字和分数,并设置指向下一个相同类型的指针[^2]。
#### 创建新节点函数
编写一个辅助函数用来分配内存并返回一个新的学生记录实例:
```c
// 新建学生结点
Student* createNode(const char* studentName, int studentScore) {
// 动态申请空间
Student* newNode = (Student*)malloc(sizeof(Student));
strcpy(newNode->name, studentName);
newNode->score = studentScore;
// 初始化为空
newNode->next = NULL;
return newNode;
}
```
这段程序展示了如何通过传入参数构建新的学生对象,并将其链接到列表中。
#### 插入数据至链表头部
提供一种方法可以将新创建的学生加入现有链条之前的位置上:
```c
void insertAtBeginning(Student** headRef, const char* studentName, int studentScore) {
// 使用createNode创建的新节点
Student* newNode = createNode(studentName, studentScore);
// 将新建的node放到最前面
newNode->next = *headRef;
*headRef = newNode;
}
```
上述逻辑实现了向已有的单项链条前端添加元素的功能[^1]。
#### 打印整个链表的内容
最后还需要能够查看当前所有的学生资料,因此设计了如下输出功能:
```c
void printList(Student* node) {
while (node != NULL) {
printf("Name: %s\t Score:%d\n", node->name, node->score);
node = node->next;
}
}
```
该段脚本负责遍历整个序列并将每项内容展示出来[^3]。
阅读全文