数据结构实验:哈希表

题目描述

 在n个数中,找出出现次数最多那个数字,并且输出出现的次数。如果有多个结果,输出数字最小的那一个。

输入

 单组数据,第一行数字n(1<=n<=100000)。
接下来有n个数字,每个数字不超过100000000

输出

 出现次数最多的数字和次数。

示例输入

3
1 1 2

示例输出

1 2

提示

 

来源

 cz

示例程序

#include <stdio.h>
#include <stdlib.h>
const int N=100000;
int a[100000];
struct node
{
    int date;
    node *next;
}*h[N];
void suspend(int x)
{
    int tp=x%N;
    node *p=new node;
    p->date=x;
    p->next=h[tp];
    h[tp]=p;
}
int find1(int x)
{
    int tp = x%N;
    int cnt = 0;
    for (node *p = h[tp]; p; p = p->next)
    {
        if (p->date == x) cnt++;
    }
    return cnt;
}
int main()
{
    int n, i, x, y, z=0;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
        suspend(a[i]);
    }
    for(i=0;i<n;i++)
    {
        if(z<find1(a[i]))
        {
            z=find1(a[i]);
            y=i;
        }
    }
    printf("%d %d\n",a[y],z);
    return 0;
}


你可能感兴趣的:(编程,算法,哈希,C语言)