您的位置:首页 > 理论基础 > 数据结构算法

数据结构实验:哈希表

2014-02-13 14:18 239 查看

题目描述

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

输入

   
 单组数据,第一行数字n(1<=n<=100000)。

接下来有n个数字,每个数字不超过100000000
  

输出

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

示例输入

   

3
1 1 2


  

示例输出

   

1 2


        

#include<stdio.h>
#include<string.h>

struct m
{
int data;
int tim;
struct m * next;
} a[100001];

int addm(int n,int d)
{
m *p = &a
,*t;
t = p;
while (p != NULL)
{
if (p->data == d)
{
p->tim++;
return 0;
}
p = p->next;
if (t->next != NULL)
t = t->next;
}
p = t;
p->next = new m;
p = p->next;
p->data = d;
p->tim = 1;
p->next = NULL;
return 0;
}
int imax;
int fid (void)
{
int t = 0,n = 0,i;
m *p;
for (i = 0; i < 100000; i++)
{
p = &a[i];
while (p != NULL)
{
if (p->tim > t)
{
t = p->tim;
n = p->data;
}else if (p->tim == t)
{
if (p->data < n)
{
n = p->data;
}
}
p = p->next;
}
}
imax = n;
return t;
}

int main()
{
int n,i,m,t;
memset(a,0,sizeof (a));
scanf ("%d",&n);

for (i = 0; i < n; i++)
{
scanf ("%d",&t);
addm(t % 100000,t);
}
int num = fid();
printf ("%d %d\n",imax,num);
return 0;
}


   
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: