首页 > 编程学习 > 用链表储存学生信息然后排序输出

题目:4.建立一个链表,每个结点包括:学号,姓名,年龄,性别。要求输入3个人的信息,将他们按照年龄正序/逆序排序输出他们的信息。
下面是代码:
结构体模块:

typedef struct Student{	long num;char name[8];int age;char sex[5];Student *next;
}stu;

初始化模块

void init(stu **pNode,int n){int i = 1;while (i<=n){stu *node = *pNode;stu *temp;if (*pNode == NULL){*pNode = (stu *)malloc(sizeof(stu));long num;printf("输入第%d个学生学号:", i);scanf("%ld", &num);(*pNode)->num = num;char name[10];printf("输入第%d个学生姓名:", i);scanf("%s", (*pNode)->name);int age;printf("输入第%d个学生年龄:", i);scanf("%d", &age);(*pNode)->age = age;char sex[5];printf("输入第%d个学生性别:", i);scanf("%s", (*pNode)->sex);(*pNode)->next = NULL;i++;}else{node = *pNode;while (node->next != NULL){node = node->next;}temp = (stu *)malloc(sizeof(stu));long num;printf("输入第%d个学生学号:", i);scanf("%ld", &num);temp->num = num;char name[10];printf("输入第%d个学生姓名:", i);scanf("%s", temp->name);int age;printf("输入第%d个学生年龄:", i);scanf("%d", &age);temp->age = age;char sex[5];printf("输入第%d个学生性别:", i);scanf("%s", temp->sex);temp->next = NULL;node->next = temp;i++;}}
}

排序模块

stu *paixu(stu *pNode){stu *node1 = (stu*)malloc(sizeof(stu));stu *node2 = (stu*)malloc(sizeof(stu));for (node1 = pNode; node1 != NULL; node1 = node1->next){for (node2 = node1->next; node2 != NULL; node2 = node2->next){if (node1->num > node2->num){stu *temp = (stu*)malloc(sizeof(stu));temp->num = node1->num;*temp->name = *node1->name;temp->age = node1->age;*temp->sex = *node1->sex;node1->num = node2->num;*node1->name = *node2->name;node1->age = node2->age;*node1->sex = *node2->sex;node2->num = temp->num;*node2->name = *temp->name;node2->age = temp->age;*node2->sex = *temp->sex;}}}return pNode;
}

遍历函数

void bianli(stu *pNode){stu *node;node = pNode;printf("学号\t姓名\t年龄\t性别\t\n");while(node->next != NULL){printf("%ld\t", node->num);printf("%s\t", node->name);printf("%d\t", node->age);printf("%s\t", node->sex);printf("\n");node = node->next;}printf("%ld\t", node->num);printf("%s\t", node->name);printf("%d\t", node->age);printf("%s\t", node->sex);printf("\n");
}

主函数

int _tmain(int argc, _TCHAR* argv[])
{int n;printf("请输入要存入信息的人数:");scanf("%d", &n);stu *head = NULL;init(&head,n);stu *newhead = paixu(head);bianli(newhead);system("pause");return 0;
}

测试结果:(汉字输入会有一个字乱码,正在修改)
在这里插入图片描述


本文链接:https://www.ngui.cc/zz/1944496.html
Copyright © 2010-2022 ngui.cc 版权所有 |关于我们| 联系方式| 豫B2-20100000