数据结构实验:哈希表
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
输入
接下来有n个数字,每个数字不超过100000000
输出
示例输入
3 1 1 2
示例输出
1 2
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct node
{
int data;
int num;
struct node *next;
}*head[100010];//定义一个包含数值,个数和指向下一节点的指针
int main()
{
int i,j,n,m,y,mdata,mnum=0;
struct node *p,*q,*r;
for(i=0; i<100000; i++)
{
head[i]=(struct node *)malloc(sizeof(struct node));
head[i]->next=NULL;
}
scanf("%d",&n);
for(i=0; i<n; i++)
{
scanf("%d",&m);
y=m%100000;
q=head[y];
p=head[y]->next;
while(p!=NULL)
{
if(p->data==m)
{
p->num++;
if(p->num>mnum)
{
mnum=p->num;
mdata=p->data;
}
else if(p->num==mnum)
{
if(p->data<mdata)
mdata=p->data;
}
break;
}
q=p;
p=p->next;
}
if(p==NULL)
{
r=(struct node *)malloc(sizeof(struct node));
r->data=m;
r->num=1;
q->next=r;
r->next=NULL;
if(r->num>mnum)
{
mnum=r->num;
mdata=r->data;
}
else if(r->num==mnum)
{
if(r->data<mdata)
mdata=r->data;
}
}
}
printf("%d %d\n",mdata,mnum);
return 0;
}