C语言实现单链表学生信息存储、插入、排序与逆序操作
#include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct Student { int id; char name[20]; int score; struct Student* next; } Student; // 创建带头节点的单链表 Student* createLinkedList() { Student* head = (Student*)malloc(sizeof(Student)); head->next = NULL; return head; } // 在单链表中插入学生信息 void insertStudent(Student* head, int id, char* name, int score) { Student* newStudent = (Student*)malloc(sizeof(Student)); newStudent->id = id; strcpy(newStudent->name, name); newStudent->score = score; Student* p = head; while (p->next != NULL) { p = p->next; } p->next = newStudent; newStudent->next = NULL; } // 对学生信息进行排序,按照分数从小到大的顺序进行排序 void sortStudents(Student* head) { Student *p, *q; int temp; char tempName[20]; for(p = head->next; p != NULL; p = p->next) { for(q = p->next; q != NULL; q = q->next) { if(p->score > q->score) { temp = p->score; p->score = q->score; q->score = temp; strcpy(tempName, p->name); strcpy(p->name, q->name); strcpy(q->name, tempName); } } } } // 对学生信息进行逆序操作,让学生分数从大到小存储在单链表中 void reverseStudents(Student* head) { Student* prev = NULL; Student* current = head->next; Student* next = NULL; while (current != NULL) { next = current->next; current->next = prev; prev = current; current = next; } head->next = prev; } // 输出学生信息 void printStudents(Student* head) { Student* p = head->next; while (p != NULL) { printf("学号: %d, 姓名: %s, 分数: %d\n", p->id, p->name, p->score); p = p->next; } } int main() { Student* head = createLinkedList(); // 初始数据 insertStudent(head, 1, "王令", 98); insertStudent(head, 3, "张成", 67); insertStudent(head, 5, "陈晨", 74); insertStudent(head, 7, "王家", 82); insertStudent(head, 2, "张都", 68); insertStudent(head, 9, "万洪", 73); // 插入新数据 insertStudent(head, 12, "林嘉", 84); printf("排序前:\n"); printStudents(head); sortStudents(head); printf("\n分数从小到大排序后:\n"); printStudents(head); reverseStudents(head); printf("\n分数从大到小排序后:\n"); printStudents(head); return 0; } ######[AI写代码神器 | 1695点数解答 | 2024-07-21 10:59:56]
- Python实现Q老师成绩管理任务:修改与查看学生成绩(字节豆包 | 191点数解答 | 2025-12-20 20:55:41)98
- Python 代码助力 Q 老师高效管理班级学生成绩:修改与查看一键搞定(字节豆包 | 326点数解答 | 2025-12-27 20:48:12)104
- Java:抽象类 Vehicle 及子类 Car、MotorBike 实战演示(讯飞星火 | 440点数解答 | 2024-06-06 23:18:54)326
- 用 Pandas 深度剖析数据:从读取到统计分析全流程实战(GPT | 642点数解答 | 2024-06-30 15:39:49)375
- 用 Pandas 深入分析招聘数据:从数据读取到可视化全流程解析(GPT | 1539点数解答 | 2024-06-30 15:56:50)387
- Java实现有序集合合并与交集算法(顺序表+单链表)(百度文心 | 1247点数解答 | 2026-03-25 10:35:22)27
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)371
- 深入解析格雷码生成算法:递归求解与代码实现(DeepSeek | 443点数解答 | 2026-01-05 12:21:49)69
- C#工程师必知:数组、链表、哈希、队列、栈数据结构优缺点大揭秘! (百度文心 | 561点数解答 | 2023-11-09 17:56:30)275
- Java 实现仿 Windows 资源管理器:文件管理器功能全解析与代码示例(字节豆包 | 623点数解答 | 2025-01-01 14:59:04)268
- Java程序模拟教学选课:林老师开课,58 位学生选课男女比例大揭秘( | 2653点数解答 | 2024-04-02 11:00:16)484
- Java程序设计课程:模拟教学管理,统计58位选课学生男女比重( | 363点数解答 | 2024-04-05 18:31:39)489