数据结构试验:哈希表
数据结构实验:哈希表
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
在n个数中,找出出现次数最多那个数字,并且输出出现的次数。如果有多个结果,输出数字最小的那一个。
输入
单组数据,第一行数字n(1<=n<=100000)。
接下来有n个数字,每个数字不超过100000000
接下来有n个数字,每个数字不超过100000000
输出
出现次数最多的数字和次数。
示例输入
3 1 1 2
示例输出
1 2
提示
来源
sdut oj 1480
示例程序
#include <stdio.h>
#include <stdlib.h>
#define M 100000
typedef struct node
{
int num,time;
struct node *next;
}*A,B;
A head[M];
int main()
{
A p,q,r;
int n,i,fig=0,ci=0;
int a;
for(i=0; i<M; i++)
{
head[i]=(A)malloc(sizeof(B));
head[i]->next=NULL;
}
scanf("%d",&n);
for(i=0; i<n; i++)
{
scanf("%d",&a);
int y=a%M;
p=head[y]->next;
q=head[y];
while(p!=NULL)
{
if(p->num == a)
{
p->time++;
if(p->time > ci)
{
fig=p->num;
ci=p->time;
}
else if(p->time==ci)
{
if(p->num < fig)
fig=p->num;
}
break;
}
q=p;
p=p->next;
}
if(p==NULL)
{
r=(A)malloc(sizeof(B));
r->num=a;
r->time=1;
q->next=r;
r->next=NULL;
if(r->time > ci)
{
fig=r->num;
ci=r->time;
}
else if(r->time==ci)
{
if(r->num < fig)
fig=r->num;
}
}
}
printf("%d %d\n",fig,ci);
return 0;
}

浙公网安备 33010602011771号