初识链表(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 }

标答

posted on 2015-12-23 00:14  _阿赞  阅读(336)  评论(0编辑  收藏  举报