給定大量手機使用者聯絡歷史,找出其中通話次數最多的聊天狂人。
輸入首先給出正整數n(≤105 ),為聯絡歷史條數。隨後n行,每行給出一條聯絡歷史。簡單起見,這裡只列出撥出方和接收方的11位數字構成的手機號碼,其中以空格分隔。
在一行中給出聊天狂人的手機號碼及其通話次數,其間以空格分隔。如果這樣的人不唯一,則輸出狂人中最小的號碼及其通話次數,並且附加給出並列狂人的人數。
4
13005711862
13588625832
13505711862
13088625832
13588625832
18087925832
15005713862
13588625832
13588625832
3
#include
#include
#include
#include
#define keylength 12
#define maxtablesize 1000000
//允許開闢的最大雜湊表長度
#define maxd 5
//參與雜湊對映計算的字元個數
typedef
char elementtype[keylength ]
;typedef
int index;
//雜湊位址型別
//單鏈表定義
typedef
struct lnode *ptrtolnode;
struct lnode
;typedef ptrtolnode position;
typedef ptrtolnode list;
//雜湊表結點定義
typedef
struct tblnode *hashtable;
//雜湊表型別
struct tblnode
;int
nextprime
(int n )
return p;
}hashtable createtable (
int tablesize )
return h;
//最後將表頭結點陣列的首位址返回
}//hash函式
index hash (
const
char
*key,
int tablesize )
position find ( hashtable h, elementtype key )
int insert ( hashtable h, elementtype key )
else
}void
destroytable
( hashtable h )
}free
( h-
>heads )
;//釋放頭結點陣列
free
( h )
;//釋放雜湊表頭結點
}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 )
;return0;
}
7 20 電話聊天狂人 25分
給定大量手機使用者聯絡歷史,找出其中通話次數最多的聊天狂人。輸入首先給出正整數n 10 5 為聯絡歷史條數。隨後n行,每行給出一條聯絡歷史。簡單起見,這裡只列出撥出方和接收方的11位數字構成的手機號碼,其中以空格分隔。在一行中給出聊天狂人的手機號碼及其通話次數,其間以空格分隔。如果這樣的人不唯一,則...
電話聊天狂人
給定大量手機使用者聯絡歷史,找出其中通話次數最多的聊天狂人。輸入首先給出正整數n 10 5 為聯絡歷史條數。隨後n行,每行給出一條聯絡歷史。簡單起見,這裡只列出撥出方和接收方的11位數字構成的手機號碼,其中以空格分隔。在一行中給出聊天狂人的手機號碼及其通話次數,其間以空格分隔。如果這樣的人不唯一,則...
電話聊天狂人
給定大量手機使用者聯絡歷史,找出其中通話次數最多的聊天狂人。輸入格式 輸入首先給出正整數n 10 5 為聯絡歷史條數。隨後n行,每行給出一條聯絡歷史。簡單起見,這裡只列出撥出方和接收方的11位數字構成的手機號碼,其中以空格分隔。輸出格式 在一行中給出聊天狂人的手機號碼及其通話次數,其間以空格分隔。如...