初识链表(for hw)
Jeremy最近学习了指针和链表的概念,而链表可以使用结构体实现。他知道链表中有一种叫做循环链表例如1->2->3->4->5->1(其中第一个1和最后一个1是同一个)。
期中考试后,老师让Jeremy做一个学生的成绩统计,Jeremy想使用结构体实现简单的循环链表来完成。他计划读入同学的学号和成绩等级,例如学号1,等级b,学号2,等级a......
这个程序需要实现下面的功能:
例如有4个同学,他们的学号等级分别为:“12 a”,"3 b", "57 c", "1 d";他们的关联关系为"12 a"->"3 b"->"57 c"->"1 d"->"12 a"。
程序需要实现的功能是当输入一个学号时,输出上一个同学的等级,例如输入3,应该输出a,输入12应该输出d。
当输入的学号在这些同学中出现多次时,输出学号第一次出现时上一个同学的等级,例如:“12 a”,"12 b", "57 c", "1 d",应输出d
若查找不到该学号,则不输出
有其他坑爹地方请相互在评论区提示,并邮件TA,谢谢。
Input
第一行为两个整数num和m,num代表学生的总数,m代表输入的学号。
下面num行,每一行包含一个整数代表学号和一个字符代表成绩等级
Output
上一个同学的成绩等级(换行)
Input
3 2
1 a
2 b
3 c
Output
a
链表模板如下:
typedef struct node *link;
typedef struct node {
int student_num;
link next;
}node;
尽管可以用数组完成,但希望同学们可以掌握一下如何写链表和结构体,今后笔试面试都有很大机会用得上。
我的是用结构体数组,虽然没有用链表,但是也能学到挺多
1 #include<stdio.h> 2 struct stu { 3 int a; 4 char b; //可以为开数组提供便利或者提供分类 5 }; 6 7 int main() { 8 int i, num, m; 9 struct stu haha[10000];//结构体可以用于开一个数组,数组里面可以有很多不同类型的变量,且可以分很多个变量 10 scanf("%d %d", &num, &m); 11 for (i = 1; i <= num; i++) { 12 scanf("%d %c", &haha[i].a, &haha[i].b);//可以这样用,注意%d与%c之间的空格,根据题目的输入一定要有,不然%c读入的会是空格 13 } 14 for (i = 1; i <= num; i++) { 15 if (m == haha[1].a) { 16 printf("%c\n", haha[num].b); 17 break; 18 } else if (haha[i].a == m) { 19 printf("%c\n", haha[i - 1].b); 20 break; 21 } 22 } 23 return 0; 24 }
标答