博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
编程珠玑:单词频率最高选取
阅读量:5761 次
发布时间:2019-06-18

本文共 1987 字,大约阅读时间需要 6 分钟。

问题描述:

对一个输入文本中的每个单词的出现次数统计,并选取出现频率最大的10个单词

 

首先用C++实现,着重注意STL的map,vector排序用法,这里与编程珠玑的代码不同。不知道何故,编程珠玑上的代码, 输入之后得到的结果是按照单词排序的,而不是按照次数排序,这里做了修改

C++实现代码:

#include 
#include
#include
#include
#include
#include
using namespace std; typedef pair
PAIR;int cmp(const PAIR& x, const PAIR& y){ return x.second > y.second;} int main() { map
wordcount; vector
vec; vector
::iterator itr; string t; while((cin >> t) && t != "0") { wordcount[t]++; } for (map
::iterator curr = wordcount.begin(); curr != wordcount.end(); ++curr) { vec.push_back(make_pair(curr->first, curr->second)); } sort(vec.begin(), vec.end(), cmp); for(itr = vec.begin(); itr != vec.end(); itr++) { cout << itr->first << " " << itr->second<

 

这里用C语言试下的话较为麻烦些,需要建立自己的节点和散列表:

下面按照编程珠玑,用C语言实现,但是编程珠玑似乎仍然没有给出排序的方式

#include 
#include
#include
#define NHASH 29989#define MULT 31typedef struct node{ char *word; int times; node *next;} node;typedef struct node *nodeptr;nodeptr bin[NHASH];int hash(char *p){ unsigned int h = 0; for( ; *p != 0; p++) { h = h * MULT + *p; if(h > NHASH) { h = h % NHASH; } } return h;}void incWord(char *s){ int h = hash(s); for(node *p = bin[h]; p != NULL; p = p->next) { if(strcmp(s,p->word) == 0) { p->times++; return ; } } node *ptr ; ptr = (node*)malloc(sizeof(node)); ptr->times = 1; ptr->word = (char*)malloc(strlen(s)+1); strcpy(ptr->word, s); ptr->next = bin[h]; bin[h] = ptr;}int main(){ char buf[50]; while(scanf("%s", buf) != EOF ) { incWord(buf); } for(int i=0; i
next) { printf("%s %d\n", p->word, p->times); } } for(int i=0; i
next) { free(p); } } system("pause");}

 

转载地址:http://xslkx.baihongyu.com/

你可能感兴趣的文章
NFS 网络文件系统 简单搭建
查看>>
50、【华为HCIE-Storage】--存储维护与故障处理
查看>>
理解Linux系统负荷
查看>>
【问】插件项目中同时含有多个RCP插件时导致搜索视图无法打开问题
查看>>
我的友情链接
查看>>
1.6--1.9压缩软件总结
查看>>
android dp和px转换
查看>>
用SSL对邮件加密的支持
查看>>
Windows7激活状态文件的备份与还原方法
查看>>
DNS简介及案例
查看>>
【过程改进】总结大中小型项目的git流程
查看>>
GitLab搭建以及配置(一)
查看>>
Nginx编译安装
查看>>
linux文件和目录管理的基本命令
查看>>
关于php里面的mysql client API version版本更新
查看>>
Windows Server入门系列之一 网络操作系统简介
查看>>
apache rewrite 参数和例子
查看>>
C语言指针和链表的体会
查看>>
0-简介
查看>>
ERC功能模块特点介绍
查看>>