#include <stdio.h>
#include <string.h>
// 定义学生结构体
typedef struct {
int num;
char name[10];
int grade;
} student;
// 冒泡排序函数
void bubbleSort(student *ptr[], int n) {
int i, j;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (ptr[j]->grade > ptr[j + 1]->grade) {
// 交换指针,而不是结构体内容
student *temp = ptr[j];
ptr[j] = ptr[j + 1];
ptr[j + 1] = temp;
}
}
}
}
// 打印学生信息
void printStudents(student *ptr[], int n) {
for (int i = 0; i < n; i++) {
printf("%02d %s %d\n", ptr[i]->num, ptr[i]->name, ptr[i]->grade);
}
}
int main() {
// 初始化学生数组
student students[] = {
{2, "Lin", 92}, {3, "Zhang", 87}, {4, "Zhao", 72}, {5, "Ma", 91},
{9, "Zhen", 85}, {11, "Wang", 100}, {12, "Li", 86}, {13, "Xu", 83},
{16, "Mao", 78}, {17, "Hao", 95}, {20, "Lu", 82}, {21, "Song", 76},
{22, "Wu", 88}
};
int n = sizeof(students) / sizeof(students[0]);
// 创建结构体指针数组
student *ptrs[n];
for (int i = 0; i < n; i++) {
ptrs[i] = &students[i];
}
// 打印排序前的学生信息
printf("排序前:\n");
printStudents(ptrs, n);
// 排序
bubbleSort(ptrs, n);
// 打印排序后的学生信息
printf("排序后:\n");
printStudents(ptrs, n);
return 0;
}
记录两个算法 链表结构和递归
最新推荐文章于 2024-06-12 10:00:23 发布