#include <iostream>
#include <string>
using namespace std;
typedef struct node *nodeptr;
typedef struct node{
char *word;
int count;
nodeptr next;
}node;
#define NHASH 29989
#define MULT 31
nodeptr bin[NHASH];
unsigned int hash(char *p)
{
unsigned int h = 0;
for (;*p;p++)
{
h=MULT*h+*p;
}
return h%NHASH;
}
void incword(char *s)
{
unsigned h = hash(s);
nodeptr p;
for (p=bin[h];p!=NULL;p=p->next)
{
if (strcmp(s,p->word)==0)
{
(p->count)++;
}
return;
}
p=(nodeptr)malloc(sizeof(node));
p->count=1;
p->word=(char *)malloc(strlen(s)+1);
strcpy(p->word,s);
p->next=bin[h];
bin[h]=p;
}
int main()
{
int i;
for (i=0;i<NHASH;++i)
{
bin[i]=NULL;
}
char s[100];
while (cin>>s)
{
incword(s);
}
nodeptr p;
for (i=0;i<NHASH;++i)
{
for (p=bin[i];p!=NULL;p=p->next)
{
cout << p->word <<" "<<p->count<<endl;
}
}
return 0;
}
统计字符数
最新推荐文章于 2023-01-14 11:22:16 发布