资源简介
读入文本集,建立倒排索引,内含有的TXT文本可以替换,源代码可以直接运行
代码片段和文件信息
#include
#include
#include
#include
using namespace std;
class node
{
friend class suoyin;
public:
char * name;
node * next;
bool d1; //记录name是否在第一个文档中
bool d2; //记录name是否在第二个文档中
node(){d1=false;d2=false;}; //初始化 设为不存在
node(char * a); //初始化,将外部字符串设为name
};
node::node(char * a)
{//初始化,将外部字符串设为name
name = new char [];
name = a;
}
class suoyin
{//倒排索引类
public:
node * root ;//记录根节点,创建链表记录倒排索引
suoyin(){root = NULL;}//初始化 root
suoyin & addnode(int knode & a);//将外部节点加入倒排索引
suoyin & delenode();//删除重复名字的节点,并且将记录表合并
int * find(char * x);//按名字查找记录,并且返回记录表(为一个int数组)
void output1();//打印在屏幕上
void output2();//打印在“il.txt“中
};
suoyin & suoyin::addnode(int knode & a)
{//将外部节点加入倒排索引
node * p=root;
for(int i=1;i p=p->next;//寻找到最后一个节点
node * y =new node;//新建节点y作为桥梁,将新节点加入
y->name=a.name;
y->d1=a.d1;
y->d2=a.d2;
if(k!=0)//加入的不是首节点
{
y->next=p->next;
p->next=y;
}
if(k==0)//加入的是首节点
{
y->next=root;
root=y;
}
return * this;//返回新的倒排索引
}
suoyin & suoyin::delenode()
{//删除重复名字的节点,并且将记录表合并
node * p = root;
while (p->next)//遍历倒排索引
{
if (!strcmp(p->next->namep->name))//当名字相同时
{//合并记录表,并将第二个节点删除
p->d1=p->d1+p->next->d1;
p->d2=p->d2+p->next->d2;
p->next=p->next->next;
}
else p=p->next;//名字不同时,放过
}
return * this;//返回新的倒排索引
}
int * suoyin::find(char * a)
{//按名字查找记录,并且返回记录表(为一个int数组)
int results[2];//记录查询结果
results[0]=-1;//先初始化为-1
results[1]=-1;
node * current=root;
while(strcmp(current->namea)!=0)
{
current=current->next;
}
if(current)//找到对应的名字
{//返回相应的记录表
results[0]=current->d1;
results[1]=current->d2;
return results;
}
return results; //没找到对应的名字,返回值为-1的记录表
}
void suoyin::output1()
{//打印在屏幕上
node * current;
for(current=root;current;current=current->next)
{
int fre=current->d1+current->d2;
cout<name<<“ fre:“< if(current->d1) cout<<“ ->1“;
if(current->d2) cout<<“ ->2“;
cout< }
}
void suoyin::output2()
{//打印在“il.txt“中
ofstream fout1(“il.txt“);
node * current;
for(current=root;current;current=current->next)
{
int fre=current->d1+current->d2;
fout1<name<<“ fre:“< if(current->d1) fout1<<“ ->1“;
if(current->d2) fout1<<“ ->2“;
fout1< }
fout1.close();
}
void change (node & xnode & y)
{//外部函数,按名字排列时,交换两个词项的顺序
char * temp=new char [strlen(x.name)+1];//交换名字
strcpy(tempx.name);
strcpy(x.namey.name);
strcpy(y.nametemp);
bool dtemp=x.d1;//交换记录表
x.d1=y.d1;
y.d1=dtemp;
bool ddtemp=0;
ddtemp=x.d2;
x.d2=y.d2;
y.d2=ddtemp;
};
void copy(char * achar * bint iint j)
{//外部函数,将a字符串的第i位到第j位复制到b字符串中,处理布尔查询表达式时用
int count;
for(count=0;count {
b[count]=a[i+count];
}
b[count]=‘\0‘;
};
int main()
{
char a[80][80];//二维数组存放初始词项
ifstream fin1(“1.txt“);
ifstre
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 75 2013-09-24 21:35 1.txt
文件 80 2013-09-24 21:35 2.txt
文件 7061 2013-10-09 14:45 dd.cpp
文件 566 2013-10-09 14:44 il.txt
相关资源
- 图像增强GLG算法(gray level grouping)
- openGL和C++实现光线跟踪作业
- c++_图书信息管理系统(
- 遗传算法C++
- 高斯迭代法的c++源程序
- C++排课程序
- c++学籍管理系统 课程设计报告
- 从C语言转C++简明教程_v5.3.zip
- c++语言基础教程课后答案_吕凤翥编
- 通讯录管理系统C++
- C++工作量的统计
- dsp2812三相PWM逆变源程序C++
- C++ primer plus课后编程练习题答案
- 哈工大软设二--DBMS原型开发系统C++
- C++ 控制台 扫雷 鼠标输入
- C++图书管理系统代码
- 基于C++实验室预约系统
- LSTM C++源代码
- VC++ 中国象棋程序源代码
- C/C++仿真实现Linux文件系统
- C++ primer 第五版源程序含C++11扩展
- VC++ UDP穿透NATP2P原理及代码.rar
- 高斯消去法C++代码
- 蚁群算法源代码 C++版
- 人工智能 A*算法 八数码问题 C++ 报告
- 光束法区域平差c++程序
- VC++ USB接口编程(代码)
- 轻量级C++实现的httpserver和httpclient
- 打砖块游戏
- C++程序设计原理与实践 原书第2版 基
评论
共有 条评论