• 大小: 3KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-05-13
  • 语言: C/C++
  • 标签: 词频统计  

资源简介

内容 (1)从文件中读出一篇英文文章,将不同的单词存入堆中,建立相应的索引表确定各单词在堆中存储的位置及出现的次数。 (2)按单词出现的频率递减的次序输出。

资源截图

代码片段和文件信息

#include 
#include
#include
#define MaxSize 100
#define MaxLen   20
#define MaxWord  10
typedef struct
{  char data[MaxLen];
   int  len;
}SqString;//单词读取

typedef struct
{
  int addr;
  int len;
  int fre;//存储频度
}idxtem;//索引表

typedef  struct
{
   char  space[MaxSize];
   int  free;
   idxtem  item[MaxWord];
   int last;
}idxlist;//堆

void init(idxlist *&List)
{
   List=(idxlist *)malloc(sizeof(idxlist));
   List->free=0;
   List->last=-1;
}

void create_sq(SqString &strFILE *fp1)//单个单词
{

   str.len=0;
   int i=0;
   char ch;
  while(!feof(fp1))//判断文件是否结束
{
      ch=fgetc(fp1);//用fgetc函数从文件读入一个字符
  if(((ch<‘A‘)||(ch>‘Z‘))&&((ch<‘a‘)||(ch>‘z‘)))
  break;
  str.data[i]=ch;
  str.len++;
  i++;
}
 
}
void create(idxlist *List)
{    idxtem q;
    SqString str;
int igjmk1k2;
 FILE *fp1=fopen(“E:\\2.txt““r+“);//文件指针名=fopen(文件名,使用文件方式)
   while(!feof(fp1))
{     k1=0k2=0;
  create_sq(strfp1);
  for(j=-1;j<=List->last;j++)
  {
  if(List->item[j].len==str.len)//先比较长度,长度与之前不同,入堆栈长度相同顺序比较字母
  {
  for(m=0;m   {
  if(List->space[List->item[j].addr+m]!=str.data[m])//有字母不同,入堆栈
  {g=0;break;}
  else
  g=1;
  }

评论

共有 条评论

相关资源