数据结构实验之排序七:选课名单-程序员宅基地

技术标签: 排序  选课名单  数据结构  

数据结构实验之排序七:选课名单

Time Limit: 1000MS Memory limit: 65536K

题目描述

随着学校规模的扩大,学生人数急剧增加,选课名单的输出也成为一个繁重的任务,我校目前有在校生3万多名,两千多门课程,请根据给定的学生选课清单输出每门课的选课学生名单。

输入

输入第一行给出两个正整数N( N ≤ 35000)和M(M ≤ 2000),其中N是全校学生总数,M是课程总数,随后给出N行,每行包括学生姓名拼音+学号后两位(字符串总长度小于10)、数字S代表该学生选课的总数,随后是S个课程编号,约定课程编号从1到M,数据之间以空格分隔。

 

输出

按课程编号递增的顺序输出课程编号、选课总人数以及选课学生名单,对选修同一门课程的学生按姓名的字典序输出学生名单。数据之间以空格分隔,行末不得有多余空格。

示例输入

5 3
Jack01 2 2 3
Jone01 2 1 3
Anni02 1 1
Harry01 2 1 3
TBH27 1 1

示例输出

1 4
Anni02
Harry01
Jone01
TBH27
2 1
Jack01
3 3
Harry01
Jack01
Jone01

提示

 

来源

xam

示例程序

 

 

 

#include<stdio.h>
#include<string.h>
#include<malloc.h>
typedef struct node
{
    char name[15];
    struct node *next;
}node;
node *nam[2010];
int num[2010];
int main()
{
    char str[15];
    int n,m,s,shu;
    int i;
    while(~scanf("%d%d",&n,&m))
    {
        memset(num,0,sizeof(num));
        for(i=0;i<2010;i++)
        {
            nam[i]=(struct node *)malloc(sizeof(struct node));
            nam[i]->next=NULL;
        }
        for(i=0;i<n;i++)
        {
            scanf("%s%d",str,&s);
            while(s--)
            {
                scanf("%d",&shu);
                num[shu]++;
                node *q=(struct node *)malloc(sizeof(struct node));;
                q->next=NULL;
                strcpy(q->name,str);
                node *p=nam[shu];
                while(p->next)
                {
                    if(strcmp(q->name,p->next->name)<0)
                        break;
                    p=p->next;
                }
                q->next=p->next;
                p->next=q;
            }
        }
        for(i=1;i<=m;i++)
        {
            printf("%d %d\n",i,num[i]);
            node *p=nam[i]->next;
            while(p)
            {
                printf("%s\n",p->name);
                p=p->next;
            }
        }
    }
    return 0;
}


 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/a1265262132/article/details/52278734

智能推荐

微信小程序实现左滑删除效果(原生/uni-app)-程序员宅基地

实现效果列表中侧滑删除删除不同时存在scrollview上下滑动与侧滑删除不影响uni-app实现html部分<template> <scroll-view :scroll-y="isScroll" :style="{ height: windowHeight + 'px' }"> &..._uniapp实现仿微信左滑

Xcode 各版本简介_xcode哪个版本好用-程序员宅基地

1、Xcode 验证在终端输入 spctl 命令,并带上安装的 Xcode 的路径$ spctl --assess --verbose /Applications/Xcode.app 之后会看到类似这样的结果,只要结果是 accepted 而且 source 是 Mac App Store、Apple System 或 Apple 就表示这个 Xcode 是没问题的。/Ap..._xcode哪个版本好用

寒假作业_4-程序员宅基地

寒假第四次作业已学内容总结关于C++其实在开学前的暑假,我自己网购了一本《C++ primer plus》打算自学C++,但由于贪玩,只看到第八章“函数”,可以说其实还没看到C++的精彩之处就开学了。而开学后对C++的学习就停滞了,也一直不明白何为面向过程,何为面向对象。这次寒假看了魏英老师的C++程序设计,接着先前书本的内容往下学才感受到了C++的强大之处,而电梯作业也让我尝试了面向对象编...

程序员一定要知道的11个实用工具网站_开发人员工具网站-程序员宅基地

目录1、搜索引擎2、PPT3、图片操作4、文件共享5、应届生招聘6、程序员面试题库7、办公、开发软件8、高清图片、视频素材网站9、项目开源10、算法11、在线工具宝典大全程序员开发需要具备良好的信息检索能力,为了备忘(收藏夹真是满了),将开发过程中常用的网站进行整理。1、搜索引擎1.1、秘迹搜索一款无敌有良心、无敌安全的搜索引擎,不会收..._开发人员工具网站

电脑怎么用计算机打开指令,命令提示符怎么用 命令提示符快捷键打开使用技巧详解...-程序员宅基地

在一些比较专业的电脑技巧中,往往需要用到命令提示符,运行一些系统命令来实现一些无法在Windows系统中直接打开的操作。对于很多喜欢玩转电脑的新手伙伴们可能还不知道命令提示符怎么用,其实很简单,只要进入到命令符操作界面,然后熟悉一些操作命令即可,以下本文与大家详细介绍下。命令提示符怎么用 命令提示符快捷键使用技巧一、如何打开命令提示符操作界面打开命令提示符操作界面很简单,有多种方法,最简单就是使用..._控制命令符怎么打开

[FOC-Simulink]使用Simulink代码生成工具基于STM32开发板对永磁同步电机进行无传感矢量控制_simulink自动生成代码stm32-程序员宅基地

磁场定向控制包含电流环和速度环,电流环是通过转矩电流分量闭环控制实现动态调节,速度环是以目标转速和测量转速为闭环控制量。对于无传感器(无编码器/霍尔传感器)的电机需要对转子速度和位置进行观测,本案例中采用了滑模观测器(SMO)或磁通观测器。滑模观测器使用定子电压和电流作为输入来估计电机模型的反电动势(EMF),进而估计转子位置和速度,而磁通观测器使用定子电压和电流估计定子磁通、产生的扭矩和转子位置。_simulink自动生成代码stm32

随便推点

Python学习记录_python测试教程-程序员宅基地

下载安装教程 python入门基础 Python基础命令 Python基础语法(菜鸟教程) Pycharm注册码 PyCharm License Activation激活码失效问题的解决方法 慧网盘 Pycharm下载及使用 Pycharm背景颜色设置 appium资料 学习python网址 慕课网:https://www.imooc.com/learn/177 ..._python测试教程

stm32l4低功耗模式 笔记_stm32l431休眠-程序员宅基地

Stm32l4xx支持7种低功耗 睡眠模式(sleep):CPU停止工作,所有外设(peripheral)仍可以工作,使用中断(interrupt)或者事件(event)进行CPU唤醒。 低功耗运行模式(Low-power run):使用最低电压进行提供内核电压(VCORE),代码可以在SRAM和FLASH里面进行运行,CPU运行频率限制在2MHz,外设(periphera_stm32l431休眠

虎牙被抬员工当事人再发声;淘宝回应网店客服“看见”用户未发送内容;Python 3.9.2 发布 | 极客头条..._CSDN资讯的博客-程序员宅基地

「极客头条」—— 技术人员的新闻圈!CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧。整理 | 丁恩华出品 | CSDN(ID:CSDNn..._虎牙客户端逆向分析

php 一对多 多对多,ThinkPHP5 一对多,多对多关联模型的尝试-程序员宅基地

搜索热词首先是一对多:查询卖家自定义分类: 建立卖家表seller,建立分类表category表中记得创建 外键字段 seller_id,category_id,TP5框架中创建两个seller 和categorr模型,/*** Created by PHPStorm.* User: 爱憎分明* Date: 2018/12/24* Time: 21:04*/namespace appapimo...

MATLAB(二) 图像处理--图像增强_matlab亮度增强代码-程序员宅基地

图像增强 概述:图像增强与图像复原是不同的,图像增强所要达到的目的是突出感兴趣的目标,而图像复原则是最大限度的恢复到原始图像,比如在采集时混杂入了噪声的图像,图像增强可以用灰度变换,即灰度值的大小的变换,也可以用中值滤波、频域滤波等。它们的效果可能更倾向于人的主观,如灰度变换后,感兴趣的目标变清晰了(变亮了),中值滤波使图像更平滑(不分析降质原因,增强了视觉效果),频域滤波能使边缘变清晰,但它们..._matlab亮度增强代码

Android支付宝集成流程_android开发集成支付宝支付功能流程-程序员宅基地

一:介绍项目中要用到支付功能,需要支付宝支付、微信支付、银联支付、所以打算总结一下,方便以后的查阅,也方便大家,用到的地方避免再次被坑。今天我们就主要介绍一下支付宝支付,其他支付也给出了对应的链接。在做支付之前,在网上也查询了资料,大多都说,支付宝接入坑太多,微信坑最多,银联文档太复杂。其实如果接入的多的话,那些套路都可以绕着走,网上的经验什么的大都是比较老的,比较新的能用到的文章不多(但..._android开发集成支付宝支付功能流程