zoukankan      html  css  js  c++  java
  • 【openjudge】数字统计

    总时间限制: 
    1000ms 
    内存限制: 
    100000kB
    描述
    输入n个整数,统计每个数出现的次数.
    输入
    第一行是一个整数n(1<=n<=1000),接下来n行每行一个整数.
    输出
    第一行输出总共有多少个不同的整数.
    接下来每行输出一个整数及这个整数出现的次数,用空格分隔.
    输出的整数的顺序与它们在输入中第一次出现的顺序一致(即在输入中先出现的数,也会在输出中先出现)
    样例输入
    5
    2
    3
    2
    1
    2
    样例输出
    3
    2 3
    3 1
    1 1

    这道题用顺序存储的数组也应该能实现。但是估计会超时。并且题目是链式存储的练习。所以还是用链表来解比较好。

    #include <stdio.h>
    #include <malloc.h>
    typedef struct Lnode
    {
        int data;
        int sum;
        struct Lnode *next;
    }LNode,*Linklist;
    LNode *head;
    void initlist(Linklist *L)
    {
        *L=(LNode *)malloc(sizeof(LNode));
        (*L)->next=NULL;
        (*L)->sum=1;
    }
    void inselem(int n)
    {
        int x,i;
        LNode *s,*q,*p;
        for(i=0;i<n;i++)
    	{
    		q=head;
    		p=head->next;
    		scanf("%d",&x);
    		if(p==NULL){
    			initlist(&s);
    			s->data=x;
    			head->next=s;
    		}
    		while(p!=NULL)
    		{
    			if(x!=p->data)
    			{
    				p=p->next;
    				q=q->next;
    			}
    			else
    			{
    				p->sum++;
    				break;
    			}
    			if(p==NULL)
    			{
    				initlist(&s);
    				s->data=x;
    				q->next=s;
    			}
    		}
    		
    	}
    }
    int main()
    {
        int n,x;
        LNode *q;
        head=(LNode *)malloc(sizeof(LNode));
    	head->next=NULL;
        scanf("%d",&n);
        inselem(n);
    	q=head->next;
        while(q!=NULL)
        {
            printf("%d %d\n",q->data,q->sum);
    		q=q->next;
        }
        return 0;
    }
    


  • 相关阅读:
    【onenet-edp传输】1、调试上报数据点和端对端透传
    【PYQT5快速开发】重定义边框、QSS美化皮肤主题
    MySQL
    Flask-Login一个账号单用户在线
    DataTable按钮,排序,单元格颜色
    python
    MegaCli64 raid对应关系
    openstack server status
    js中使用JSON.parse转换json
    linux使用pyodbc和freetds连接sqlserver
  • 原文地址:https://www.cnblogs.com/unclejelly/p/4082168.html
Copyright © 2011-2022 走看看