整理音乐

整理音乐

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic Discuss

Problem Description


请用链表完成下面题目要求。
xiaobai 很喜欢音乐,几年来一直在收集好听的专辑。他有个习惯,每次在听完一首音乐后会给这首音乐打分,而且会隔一段时间给打好分的音乐排一个名次。今天 xiaobai 打开自己的音乐文件夹,发现有很多不同时期打过分的排好序的子音乐文件夹,他想把这些音乐放到一块,组成一个分数有序的序列。由于音乐文件很多,而文件里音乐的数目也是不确定的,怎么帮帮 xiaobai 完成这件工作呢?
   

Input

输入数据第一行为一个整数n(n<1000),代表文件夹的数量。接下来是n个文件夹的信息,每个文件夹信息的第一行是一个数字m(m<=10000),代表这个文件夹里有m首歌,后面m行每行一个歌曲名、分数,之间用空格分开。歌曲名称不超过5个字符。

Output

输出一行,为所有音乐组成的一个序列,音乐只输出名字。

如果音乐分数相同则按照音乐名字典序进行排序。

Sample Input

34aaa 60aab 50aac 40aad 302kkk 60kkd 593qow 70qwe 60qqw 20

Sample Output

qow aaa kkk qwe kkd aab aac aad qqw

Hint

 

Source

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct node
{
    int data;
    char st[100];
    struct node *next;
}*A,M;
int main()
{
    int n,m;
    A head,tail,p,q;
    head=(A)malloc(sizeof(M));
    head->next=NULL;
    scanf("%d",&n);
    while(n--)
    {
        p=head->next;
        q=head;
        scanf("%d",&m);
        getchar();
        while(m--)
        {
            tail=(A)malloc(sizeof(M));
            scanf("%s %d",tail->st,&tail->data);
            p=head->next;
            q=head;
            while(p!=NULL)
            {
                if(tail->data > p->data)
                {
                    q->next=tail;
                    tail->next=p;
                    break;
                }
                else if(tail->data==p->data)
                {
                    if(tail->st < p->st)
                    {
                        q->next=tail;
                        tail->next=p;
                        break;
                    }
                }
                q=p;
                p=p->next;
            }
            if(p==NULL)
            {
                q->next=tail;
                tail->next=NULL;
            }
        }
    }
    p=head->next;
    while(p!=NULL)
    {
        printf("%s",p->st);
        if(p->next!=NULL)
            printf(" ");
        p=p->next;
    }
    printf("\n");
    return 0;
}

 

KTV点歌系统包括曲库和点歌列表。 曲库功能包括: 1. 添加歌曲、 2. 删除歌曲、 3. 修改歌曲、 4. 查找歌曲; 点歌列表功能包括: 1. 点歌操作(从歌曲库中查找歌曲添加到点歌列表) 、 2. 歌曲优先(点歌列表中歌曲可更改歌曲排序)、 3. 删除已点歌曲。 点歌系统数据包括 1.歌曲语种分类信息列表(如中文歌曲、英文歌曲、日文、韩文等)、 2.歌曲信息列表(包括歌曲名、演唱者、曲风、和自动生成的歌曲编号) 3.点歌信息列表(包括歌曲名、演唱者、曲风,自动生成的在点歌列表中的顺序号)。 功能包括: 1.初始化歌曲分类信息顺序表,然后输入歌曲分类信息。 2.初始化歌曲信息链表,然后输入歌曲信息。 3.创建、维护曲库:添加歌曲时判断是否重复,如果不存在,则插入到歌曲信息链表中;可以修改、删除歌曲。 4.显示歌曲信息:选择歌曲语种分类,显示分类下所有歌曲信息。 5.根据演唱者查询指定演唱者的所有歌曲信息; 6.根据曲风查询指定曲风的所有歌曲信息。 7.创建点歌列表。在某类语种歌曲下,按演唱者或曲风进行查找,若查找成功,可将某歌曲添加到点歌列表(链表)中。 8.优先指定歌曲。在点歌列表中选定优先歌曲,将该歌曲移至点歌列表中的指定位置。 8.删除点歌列表中歌曲。 评分标准: 1、完成以下功能,并理解代码,60分 (界面友好、系统健壮加1~10分不等) (1) 录入歌曲语种分类信息,包括:中文,英文,日文,韩文,小语种; (2) 录入、修改歌曲信息,包括:歌曲编号,歌曲名,演唱者,曲风;删除歌曲; (3) 可以按歌曲语种分类信息显示歌曲信息。 (4) 可以根据演唱者查询指定演唱者的所有歌曲信息;根据曲风查询指定曲风的所有歌曲信息。 2、完成以下功能,并理解代码,70分 (界面友好、系统健壮加1~10分不等) (1) 录入歌曲语种分类信息,包括:中文,英文,日文,韩文,小语种; (2) 录入、修改歌曲信息,包括:歌曲编号,歌曲名,演唱者,曲风;删除歌曲; (3) 可以按歌曲语种分类信息显示歌曲信息。 (4) 可以根据演唱者查询指定演唱者的所有歌曲信息;根据曲风查询指定曲风的所有歌曲信息。 (5) 创建点歌列表。在曲库中按演唱者或曲风进行搜索,若查找成功将此歌曲添加到点歌链表中。 3、完成以下功能,并理解代码,80分 (界面友好、系统健壮加1~10分不等) (1) 录入歌曲语种分类信息,包括:中文,英文,日文,韩文,小语种; (2) 录入、修改歌曲信息,包括:歌曲编号,歌曲名,演唱者,曲风;删除歌曲; (3) 可以按歌曲语种分类信息显示歌曲信息。 (4) 可以根据演唱者查询指定演唱者的所有歌曲信息;根据曲风查询指定曲风的所有歌曲信息。 (5) 创建点歌列表。在曲库中按演唱者或曲风进行搜索,若查找成功将此歌曲添加到点歌链表中。 (6) 优先指定歌曲。在点歌列表中选定优先歌曲,将该歌曲移至点歌列表中的指定位置。 (7) 删除点歌列表中歌曲。 4、完成所有功能并能适当添加或完善功能,且理解代码,90分 (界面友好、系统健壮加1~10分不等)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值