11 雜湊1 電話聊天狂人 25 分

2021-09-23 01:57:31 字數 1578 閱讀 1127

給定大量手機使用者聯絡歷史,找出其中通話次數最多的聊天狂人。

輸入首先給出正整數n(≤10

​5​​ ),為聯絡歷史條數。隨後n行,每行給出一條聯絡歷史。簡單起見,這裡只列出撥出方和接收方的11位數字構成的手機號碼,其中以空格分隔。

在一行中給出聊天狂人的手機號碼及其通話次數,其間以空格分隔。如果這樣的人不唯一,則輸出狂人中最小的號碼及其通話次數,並且附加給出並列狂人的人數。

413005711862 13588625832

13505711862 13088625832

13588625832 18087925832

15005713862 13588625832

13588625832 3

生成比節點數大一點的素數作為表長度?

雜湊函式才用除留餘數法,所除的數即為比節點個數大一點的素數

處理衝突方法採用分離鏈結法

#include#include#includeusing namespace std;

#define keylength 11

#define maxd 5

#define maxtablesize 1000000

typedef char elementype[keylength + 1]; //『/0』需加一

typedef int index; //雜湊型別

typedef struct lnode *ptrtonode;

struct lnode;

typedef ptrtonode position;

typedef ptrtonode list;

typedef struct tblnode *hashtable;

struct tblnode;

int nextprime(int n)

return p;

}int hash ( int key, int p )

hashtable createtable(int tablesize)

return h;

}position find( hashtable h, elementype key )

bool insert( hashtable h, elementype key )

p->count++;

return false;

}}void scanandoutput( hashtable h )

else if (ptr->count == maxcnt)

ptr = ptr->next;}}

printf("%s %d", minphone, maxcnt);

if ( pcnt > 1 ) printf(" %d", pcnt);

printf("\n");

}int main()

scanandoutput( h );

// destroytable( h );

return 0;

}

11 雜湊1 電話聊天狂人 25分

給定大量手機使用者聯絡歷史,找出其中通話次數最多的聊天狂人。輸入首先給出正整數nn 10 5 為聯絡歷史條數。隨後n 行,每行給出一條聯絡歷史。簡單起見,這裡只列出撥出方和接收方的11位數字構成的手機號碼,其中以空格分隔。在一行中給出聊天狂人的手機號碼及其通話次數,其間以空格分隔。如果這樣的人不唯一...

11 雜湊1 電話聊天狂人 25 分

給定大量手機使用者聯絡歷史,找出其中通話次數最多的聊天狂人。輸入首先給出正整數n 10 5 為聯絡歷史條數。隨後n行,每行給出一條聯絡歷史。簡單起見,這裡只列出撥出方和接收方的11位數字構成的手機號碼,其中以空格分隔。在一行中給出聊天狂人的手機號碼及其通話次數,其間以空格分隔。如果這樣的人不唯一,則...

11 雜湊1 電話聊天狂人 25 分

給定大量手機使用者聯絡歷史,找出其中通話次數最多的聊天狂人。輸入首先給出正整數n 為聯絡歷史條數。隨後n行,每行給出一條聯絡歷史。簡單起見,這裡只列出撥出方和接收方的11位數字構成的手機號碼,其中以空格分隔。在一行中給出聊天狂人的手機號碼及其通話次數,其間以空格分隔。如果這樣的人不唯一,則輸出狂人中...