问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
运行结果
我的解答思路和尝试过的方法
我想要达到的结果
```c
#include<stdio.h>
#include<string.h>
#include<ctype.h>
#include<malloc.h>
#include<limits.h>
#include<stdio.h>
#include<stdlib.h>
#include<io.h>
#include<math.h>
#include<process.h>
#define LEN sizeof(LNode)
#pragma warning(disable : 4996)
typedef struct LNode
{
int score;//成绩
char name[20];//名字
int school;//学校编号
struct LNode* next;
}LNode,*LinkList;
//1.建立一个有序表,按次序输入学生的名字成绩和学校编号,输入学生名字为零时结束输入
LinkList creatIncreLink() {
LinkList p;
int num = 1, score;
int school=-1;
char name[20] = {0}, temp;
LinkList L,P;
L = (LinkList)malloc(LEN);//创建头节点
if(L)
L->next = NULL;//头节点的下一个结点指向空
printf("输入该学生的名字:%d:", num);
temp = getchar();
gets(name);
printf("输入该学生的成绩:%d:",num);
scanf_s("%d", &score);
printf("输入该学生的学校编号:%d:",num);
scanf_s("%d", &school);
while (school!=0) {
p = (LinkList)malloc(LEN);
if (p)
{
p->school = school;
p->score = score;
strcpy(p->name, name);
insertYouXu(L, p);
num++;
printf("输入该学生的名字:%d:",num);
temp = getchar();
gets(name);
printf("输入该学生的成绩:%d:",num);
scanf_s("%d", &score);
printf("输入该学生的学校编号:%d:",num);
scanf_s("%d", &school);
}
}
return (L);
}
LinkList prior(LinkList L, LinkList p) {//找前驱
LinkList p_prior = L;
if (L->next == NULL) return (L);
while (p_prior->next != p)
p_prior = p_prior->next;
return (p_prior);
}
int insertYouXu(LinkList L, LinkList Elem) {
LinkList p = L->next;
if (p == NULL) {
p = prior(L, p);
Elem->next = NULL;
p->next = Elem;
}
else {
p = prior(L, p);
Elem->next = p->next;
p->next = Elem;
}
}
//根据该学校的学校编号,统计各个学校的成绩
/*int schoolsearch(LinkList L, char n[]) {
}*/
//为了验证输入的正确,这里再多加一个函数输出记录的数据
void printList(LinkList L) {
LinkList p = L;
int n = 1;
printf("\n -----------------\n");
printf(" 姓名 成绩 学校编号\n");
printf(" -----------------\n");
if (L == NULL || L->next == NULL)
printf("wrong\n");
else
while (p->next != NULL)
{
printf(" %s %d %d\n", p->name, p->score, p->school);
p = p->next;
n++;
}
return;
}
void main(){/*
//先指向一个空的链表
int menu;
//或许会要用到一个指针,暂时不知道有什么用,先留着
system("color if");//据说是设置界面颜色,暂时不知道有什么用
printf("********************^@^欢迎使用运动会分数统计系统********************\n");
printf(" * 1 输入个项目前三名或者前五名的成绩 *\n");
printf(" * 2 统计各学校总分 *\n");
printf(" * 3 按学校编号、学校总分、男女团体总分排序输出 *\n");
printf(" * 4 按学校编号查询学校某个项目的情况 *\n");
printf(" * 5 按项目编号查询取得前三或前五名的学校 *\n");
*/LinkList L = NULL;
printf("建立男子一百米的链表链表(从小到大):\n");
L = creatIncreLink();
printList(L);
printf("建立男子两百米的 链表:\n");
L = creatIncreLink();
printList(L);
}
```