7 20 電話聊天狂人

2021-10-07 13:24:25 字數 1951 閱讀 7308

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

輸入首先給出正整數n(≤10​5 ),為聯絡歷史條數。隨後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位數字構成的手機號碼,其中以空格分隔。輸出格式 在一行中給出聊天狂人的手機號碼及其通話次數,其間以空格分隔。如...