數據結構實驗:哈希表

#include <bits/stdc++.h>
using namespace std;
struct l
{
    int data;
    int sum; // 記錄次數
}has[100010];
int main()
{
    int a,b,i,m;
    cin>>a;
    b=100000;
        memset(has,0,sizeof(has));
            for(i=1;i<=a;i++)
            {
                    cin>>m;
                    if(has[m%b].data==0||has[m%b].data==m)
                    {
                        has[m%b].data=m;
                        has[m%b].sum++;
                    }
                    else
                    {
                        int k=m%b;
                        while(has[k].data!=0)
                        {
                            if(k==b-1)
                            {
                                k=0;
                            }
                            else
                            {
                                k++;
                            }
                            if(has[k].data==m)
                            {
                                break;
                            }
                        }
                        has[k].data=m;
                        has[k].sum++;
                    }

            }
            int max,key=-1;
            max=has[0].sum;
            for(i=1;i<100000;i++)
            {
                if(max<has[i].sum)
                {
                    max=has[i].sum;
                }
            }
            for(i=0;i<100000;i++)
            {
                if(has[i].sum==max&&key==-1)
                {
                    key=has[i].data;
                }
                else if(has[i].sum==max&&key!=-1)
                {
                    if(key>has[i].data)
                    {
                        key=has[i].data;
                    }
                }
            }
           cout<<key<<" "<<max;

    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章