⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 invertedfile.c

📁 首先对英文文档建立倒排文档
💻 C
字号:
#include<stdio.h>
#include<string.h>
#include<malloc.h>
#include<conio.h>
struct Ttree
 {
  char data[20];
  int adress;
  int length;
  struct Ttree *lchild;
  struct Ttree *rchild;
 }Ttree;
struct Ttree *rt,*ff,*f,*pp;
struct Ttree * createTtree(struct Ttree *root,FILE *fp){
  int i=0,t=0,addres=0;
  struct Ttree *p,*q;
  char ch;
  p=(struct Ttree *)malloc(sizeof(Ttree));
  p->data[0]='\0';
  if(fp==NULL)
    {
    printf("\nCannot open file strike any key exit!");
     return NULL;
    }
  ch=fgetc(fp);
  while((ch!=EOF)&&(t==0))
  {    if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')){
          if(ch<='Z') ch=ch+32;
           p->data[i]=ch;
           i++;
           ch=fgetc(fp);
           }
       else{ 
       	   if(p->data[0]=='\0'){ch=fgetc(fp);addres++;continue;}
           p->length=i;
           p->data[i]='\0';
           p->adress=addres; 
           addres=addres+i+1;
           i=0;
           t=1;
           p->lchild=NULL;
           p->rchild=NULL;
           root=p;
           ch=fgetc(fp); 
          }    
     }
    q=(struct Ttree*)malloc(sizeof(Ttree));
    q->data[0]='\0' ;
   while(ch!=EOF){
       if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')){
        if(ch<='Z') ch=ch+32;
           q->data[i]=ch;
           i++;           
           ch=fgetc(fp);
          }
       else {
           if(q->data[0]=='\0'){ch=fgetc(fp);addres++;continue;}
           q->data[i]='\0';
           q->length=i;
           q->adress=addres;
           addres=addres+i+1;
           i=0;
           q->lchild=NULL;
           q->rchild=NULL;
           if(p==NULL)p=root;
           ch=fgetc(fp);
          
           while(p!=NULL)
            {
              if(strcmp(q->data,p->data)==0){
                  if(p->rchild==NULL)
                    {p->rchild=q;
                    p=NULL;}
                  else
                    p=p->rchild;
               }
              else{
                   if(p->lchild==NULL)
                    {p->lchild=q;
                     p=NULL;}
                   else
                     p=p->lchild;
              }
           }
           q=(struct Ttree*)malloc(sizeof(Ttree));
           q->data[0]='\0';
       } /*else*/
     }/*while*/
   return root;
}
struct Ttree* search(struct Ttree *root,char ch[]){
       while(root!=NULL){
       /* printf("%s",root->data);*/
              if(strcmp(root->data,ch)==0)return root;
              else  root=root->lchild;}
       return NULL;}
char ch;
char a[20];
int i=0,address=0,n;

void main(){
FILE *fp;
fp=fopen("d:\\p1.txt","r");
rt=createTtree(f,fp);
printf("请输入你要查询的单词\n");
ch=getchar();
while(ch!='\n'&&i<19){
    if(ch>='A'&&ch<='Z') ch=ch+32;
    a[i]=ch;
    ch=getchar();
    i++;}
a[i]='\0';
ff=search(rt,a);
if(ff==NULL)printf("该文档中没有你要找的单词");
else {
fseek(fp,0,0);
ch=fgetc(fp);
while(ch!=EOF){
        if(ff->adress==address){
        	 for(i=0;i<=ff->length;i++){        	        	 
        	 textcolor(RED);         	
             cprintf("%c",ch);
             ch=fgetc(fp); 
             address++; }
             ff=ff->rchild;
         }       
        printf("%c",ch);
        ch=fgetc(fp);
        address++;
        }
}
fclose(fp);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -