当前位置:首页 » 英文单词 » 链表检索英语怎么说及英文单词

链表检索英语怎么说及英文单词

发布时间: 2021-01-21 08:24:20

A. 英文文件相似度统计 C语言 最好用链表!

为什么不直接用数据库分析,分析数据当然是数据库最快最方便。回
你可以把两个文件,答批量替换,把空格,句号等都替换成逗号。
然后用数据库建立两张一样的表,只要2个字段就可以了,一个索引,一个单词
然后用导入工具,直接将逗号分割的文件导入到数据库中的这两张表里。
然后用联查语句分析。

B. 求助!单向链表,输入多个英文单词,链表不保留重复出现的。最后统计单词出现次数。调试很久一直出问题

#include<stdafx.h>
#include<stdio.h>
#include<stdlib.h>
#include <string.h>
#define maxsize 20

typedef struct node
{
int freg;//频度域,记单词出现的次数。
char word[maxsize];//maxsize是单词中可能含有的最多字母个数
struct node *next;

}node, *LinkedList;
LinkedList creat(int n) //建立有n(n>0)个单词的单向链表,若单词重复出现,则只在链表中保留一个。
{
//struct node *la;
LinkedList la;
la=(LinkedList)malloc(sizeof(node));//申请头结点。
la->next=NULL; //链表初始化。
node *p,*pre;
p=(node*)malloc(sizeof(node));
pre=(node*)malloc(sizeof(node));
char a[maxsize];
for(int i=1;i<=n;i++) //建立n个结点的链表
{
scanf("%s",a); //a是与链表中结点数据域同等长度的字符数组。
p=la->next;
pre=p; //p是工作指针,pre是前驱指针。
while(p!=NULL)
{
if(strcmp(p->word,a)==0) {p->freg++;break;} //如果输入单词重复出现,频度增1。
else {pre=p;p=p->next;}
}//指针后移。
if(p==NULL) //该单词没出现过,应插入。
{
p=(LinkedList)malloc(sizeof(node));
strcpy(p->word,a);//将键入的单词输入链表
p->freg=1;//统计该单词出现次数只有1
p->next=NULL;
pre=p;
} //将新结点插入到链表最后。
}//结束for循环。
return(la);
}//结束creat算法。

void CreatOut( int n)
//建立有n个单词的单向链表,重复单词只在链表中保留一个,最后输出频度最高的k个单词。
{

LinkedList la;
la=(LinkedList)malloc(sizeof(node));//申请头结点。
la->next=NULL; //链表初始化。
node *p,*pre,*q;
//p=la->next;pre=p; //p是工作指针,pre是前驱指针。
char a[maxsize];
for(int i=1;i<=n;i++) //建立n个结点的链表
{
scanf("%s",a); //a是与链表中结点数据域同等长度的字符数组。
p=la->next;
pre=la; //p是工作指针,pre是前驱指针。<========这里修改了
while(p!=NULL)
{
if(strcmp(p->word,a)==0)
{
p->freg++; //单词重复出现,频度增1。
pre->next=p->next; //先将p结点从链表上摘下,再按频度域值插入到合适位置
pre=la;
q=la->next;
while(q && q->freg>p->freg) //这里的循环··好像有点问题
{
pre=q;
q=q->next;
}
pre->next=p;
p->next=q;
break; // <=====这里修改了
}
else
{
pre=p;
p=p->next;
} //指针后移。
}
if(p==NULL) //该单词没出现过,应插入到链表最后。
{
p=(LinkedList)malloc(sizeof(node));
strcpy(p->word,a);
p->freg=1;
//la->next=p;

p->next=NULL;
pre->next=p; //调试到这里出错

}//if 新结点插入。

}//结束for循环建表。
int k,i=0;

scanf("%d",&k);
p=la->next;
while (p && i<k) //输出频度最高的k个单词
{printf("第%3d个单词%s出现%3d次\n",++i,p->word,p->freg);
p=p->next;
}
if (!p)
printf("给出的%d值太大\n",k);

}

void main()
{
printf("输入单词个数:");
int a;
scanf("%d",&a);
printf("输入单词个数:%d\n",a);
CreatOut(a);
return;
}

C. c语言用链表实现,统计一个英文文本文件中每个单词的出现次数(词频统计),结果按单词词典序输出到屏幕

#include <stdio.h>
#include <string.h>
int main(void)
{
int a = 0, b = 0, c = 0;
char buf[128];
FILE *fp;
/* 打开文件,文件名必须大写 */
fp= fopen("DATA5610.TXT", "r");
if (!fp) {
printf("No 'DATA5610.TXT' found.\n");
return -1;
}
/* 逐次读取单词,空格或回车分割 */
while (fscanf(fp, "%s", buf) > 0) {
/* 如读取到的单词是 if,则a自增 1 */
if (strcmp(buf, "if") == 0)
a++;
else if (strcmp(buf, "while") == 0)
b++;
else if (strcmp(buf, "for") == 0)
c++;
}
printf("if: %d, while: %d, for: %d\n", a, b, c);
fclose(fp);
return 0;
}

D. 编程从一篇英文文献读入字符串,分离单词,按指针数组加链表方式排序,构成单词表,并输出该英文文献与单

要分割单词,那文献肯定有规定格式,比如每个单词都用空格分割,你截取后插入链表的指定节点,这时就是个排序的过程。

E. 求程序,用c++设计,求一句话中英文单词的频度,用 串的匹配或者链表,怎么写啊,想要完整的程序,输

char*strstr(constchar*s1,constchar*s2)
{
intn;//字符串偏移
if(*s2)//如果第一个字符不是,就执行查找
{
while(*s1)//相当于*s1!='',不是结束符就循环查找
{
for(n=0;*(s1+n)==*(s2+n);n++)//s1[n]==s2[n],找到版相等就一直找下权去
{
if(!*(s2+n+1))///s2都已经匹配完了,证明s2是s1的子串,起始地址就是s1,将s1返回
return(char*)s1;
}
s1++;//内层循环结束,没有返回,说明子串不是从s1开始的,向后移动一个字符,继续比较
}
returnNULL;//没找到s2这个子串
}

用这个方法加个计数器

热点内容
我喜欢跑步用英语怎么 发布:2025-03-15 23:06:11 浏览:995
最喜欢的交流工具英语怎么说 发布:2025-03-15 22:58:53 浏览:80
怎么安慰感冒的人英语作文 发布:2025-03-15 22:56:52 浏览:272
关于学英语的方法作文怎么写 发布:2025-03-15 22:55:55 浏览:88
高中英语作文怎么样写 发布:2025-03-15 22:54:18 浏览:457
怎么写中招英语作文 发布:2025-03-15 22:52:52 浏览:30
你为什么不喜欢猫呢用英语怎么说 发布:2025-03-15 22:52:49 浏览:737
执拗英语怎么翻译 发布:2025-03-15 22:51:57 浏览:583
他也不喜欢吃蔬菜英语怎么翻译 发布:2025-03-15 22:18:08 浏览:726
最可爱的怎么翻译成英语怎么说 发布:2025-03-15 22:17:00 浏览:971