C语言字符串倒排,C语言兑现简单的倒排文件索引

C语言实现简单的倒排文件索引

inver.h文件

#ifndef INVERT_FILE_H

#define INVERT_FILE_H

#include

#include

typedef struct _invertfile_ {

unsigned int tablelen;

void **table;

//unsigned int offset;

unsigned int nodecount;

}if_t;

typedef struct _word_{

unsigned int id;

unsigned int refered;//

void *link;

}word_t;

typedef struct _word_frequency_{

unsigned int d_id;

unsigned int refered;//the num of referenced in the document

void *next;

}wf_t;

if_t* invertfile_create(int length);

void invertfile_insert(if_t *h,int w_id,int d_id);

wf_t* invertfile_search(if_t *h,int w_id,int d_id);

void invertfile_traverse(if_t *h);

void invertfile_free(if_t *h);

#endif

invert.cpp

#include"invert.h"

if_t* invertfile_create(int length){

if_t *h;

h = (if_t *)calloc(1,sizeof(if_t));

if (NULL == h) return NULL;

h->table =(void **)calloc(length,sizeof(void *));

h->tablelen=length;

h->nodecount=0;

word_t *w;

for(int i=0;i

h->table[i]=malloc(sizeof(word_t));

w=(word_t*)h->table[i];

w->id=i;

w->refered=0;

w->link=NULL;

}

return h;

}

//check if document d_id have word w_id

wf_t* invertfile_search(if_t *h,int w_id,int d_id){

word_t *w;

wf_t*wf;

w=(word_t*)h->table[w_id];

if(w->refered>0){

wf=(wf_t*)w->link;

while(wf){

if(wf->d_id==d_id)return wf;

wf=(wf_t*)wf->next;

}

}

return NULL;

}

void invertfile_insert(if_t *h,int w_id,int d_id){

word_t * w=(word_t*)h->table[w_id];

wf_t * wf;

if((wf=invertfile_search(h,w_id,d_id))!=NULL){

wf->refered++;

}

else{

wf=(wf_t *)malloc(sizeof(wf_t));

wf->next=w->link;

w->link=wf;

w->refered++;

wf->refered++;

wf->d_id=d_id;

h->nodecount++;

}

}

void invertfile_free(if_t *h){

word_t *w;

wf_t* wf,*cur;

for(int i=0;itablelen;i++){

w=(word_t*)h->table[i];

wf=(wf_t*)w->link;

while(wf!=NULL){

cur=wf;

wf=(wf_t*)wf->next;

free(cur);

}

free(w);

}

free(h->table);

}

void invertfile_traverse(if_t *h){

word_t *w;

wf_t* wf,*cur;

for(int i=0;itablelen;i++){

w=(word_t*)h->table[i];

wf=(wf_t*)w->link;

printf("word_id:%d;",w->id);

while(wf!=NULL){

cur=wf;

wf=(wf_t*)wf->next;

printf("d_id:%d,freq:%d;",cur->d_id,cur->refered);

}

printf("\n");

}

}测试文件main.cpp

#include"invert.h"

int main(){

if_t *f=invertfile_create(10);

invertfile_insert(f,1,1);

invertfile_insert(f,1,1);

invertfile_insert(f,1,3);

invertfile_insert(f,2,5);

invertfile_traverse(f);

invertfile_free(f);

}实验结果:

word_id:0;

word_id:1;d_id:3,freq:1;d_id:1,freq:2;

word_id:2;d_id:5,freq:1;

word_id:3;

word_id:4;

word_id:5;

word_id:6;

word_id:7;

word_id:8;

word_id:9;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/561501.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言 段位,C语言 段位

C语言允许在一个结构体中以位为单位来指定其成员所占内存长度,这种以位为单位的成员称为“位段”或“位域”在结构体中位段的定义格式为:unsignede :;例如:structbytedata{unsigned a:2; /*位段a,占2位*/unsigned b:6;…

win10定时关机c语言,win10定时关机在哪?win10设置定时关机的三种方法

win10定时关机在哪?很多win10用户可能还不会设置定时关机,下面脚本之家小编就给大家带来win10设置定时关机的三种方法,一起来看看吧!方法一:Win10定时关机命令:shutdown –s –t 3600后面的3600代表秒&…

c语言中ndigit用法,求C语言中头文件及函数的含意的总分类

ALLOC。H 说明内存管理函数(分配、释放等)。ASSERT。H 定义 assert调试宏。BIOS。H 说明调用IBM—PC ROM BIOS子程序的各个函数。CONIO。H 说明调用DOS控制台I/O子程序的各个函数。CTYPE。H 包含有关字符分类及转换的名类信息(如 isalpha和toascii等)。DIR。H 包含有关目录和路…

Android实现自定义相册,在Android Gallery App中创建自定义相册

您可以使用这种方式在Gallery应用中创建相册.该名称显示为“app images”.String path Environment.getExternalStorageDirectory().toString();File dir new File(path, "/appname/media/app images/");if (!dir.isDirectory()) {dir.mkdirs();}File file new Fi…

android 多级分组,android 二级菜单(类似QQ分组)

注意点:1)适配器BaseExpandableListAdapter2)数据源(数组、集合都行)(重点)/*** Created by mb on 2014/11/18.* 二级菜单适配器*/public class MyExpandableListAdapter extends BaseExpandableListAdapter {private Context context;List groups;//String [] grou…

android 清理工具,Android 版 Avira Optimizer 是 Android 手機清理工具

隨著時間推移,應用程式、相片、視訊和音樂會塞滿您的手機或平板電腦,拖慢系統性能。適用於 Android 的 Avira Optimizer 是最佳的 Android 清理工具,其中包括:Smart Booster如需加快開機、優化流程和實現流暢的 Android 設備&…

android编译日志在哪,Android编译环境中的JDK存放位置

this.p{ m:2,b:2,loftPermalink:,id:fks_081066082085084067092086081095080081089075087087,blogTitle:Android编译环境中的JDK存放位置,blogAbstract:因为Ubuntu 10.04已经不带有SUN JDK,所以这个需要到sun网站上下载,并手动安装。所以,这个…

华为鸿蒙系统HarmonyOS手机,华为鸿蒙系统2.0适配哪些机型

华为鸿蒙系统2.0适配机型大部分都是华为手机,那么都有哪些手机适合这个系统呢,用户想要使用鸿蒙系统应该在哪去申请呢,别着急下面我们一起了解吧。华为鸿蒙系统2.0适用机型推荐HarmonyOS 2.0手机开发者Beta公测招募入口:点击进入同…

webstorm 运行android,Windows React Native环境搭建:webstorm+android studio 及解决热更新

工具准备:SDKAndroid SDK Build-tools:23.0.1SDK Platform:Android N 、6.0 、5.1.1、5.0.1、4.4.2、4.1.2Android模拟器镜像:6.0、5.1和4.1python使用 python2nodejs使用官网最新即可更改源:npm config set registry …

android 日期时间类,Android 日期时间等转换工具类

package com.easyder.util;import java.text.SimpleDateFormat;import java.util.Date;/*** 日期时间等转换工具类.** author Administrator**/public class DateTool {/*** long类型的日期时间值转换成MM/dd/yyyy HH:mm:ss格式** param millis* return*/public String getDate…

android内部类broadcastreceiver,android 公开静态内部类BroadcastReceiver

当想实现广播接收功能时,因java 是单继承,所以一般一个类都会extends Activity,所以会想到内部类来extends BroadcastReceiver,这中间可能会出现两种异常1:java.lang.RuntimeException: Unable to instantiatereceiver com.examp…

华为鸿蒙系统使用视频,原生鸿蒙系统,华为WATCH 3上手视频曝光

华为即将在 6 月 2 日发布华为 WATCH 3,而真机图和上手视频已经出现在网络上。华为 WATCH 3 将出厂预装鸿蒙 HarmonyOS,圆形表盘 旋转表冠设计。爆料图和视频都应该都出自华为的线下门店,爆料图展示了华为 WATCH 3 和华为 WATCH 3 Pro 的包装…

在html中怎么写加起来的,css可以在html里面写吗?

css可以在html里面写吗?答案是可以的。那么如何在HTML中写CSS?下面给大家介绍一下。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。下面我们来看一下在HTML中写css的方法:1、内部样式表--在head标签…

广东省2021高考2bi补录成绩查询,重磅!广东省2021年普通高考美术统考成绩1月8日起可查询!...

我省2021年普通高考美术、书法和广播电视编导术科统考工作已全面结束。现就美术、书法和广播电视编导术科统考成绩公布有关事项通知如下:一、成绩公布时间和方式1月8日10:00起,考生可通过省教育考试院官微(ID:gdsksy)小程序和广东教育考试服务…

计算机基础知识ip地址,计算机基础知识练习题

计算机基础练习题一、单项选择题(共60小题,每题1.5分)1、 PowerPoint 2003的主要功能是____A创建演示文稿B数据处理C图像处理D文字编辑2、 PowerPoint 2003下保存的演示文稿扩展名是____A PPTB XLSC TXTD DOC3、 PowerPoint 2003建立演示文稿的3种方式为____A文件、…

计算机应用基础 辅助教学系统,计算机应用基础课程辅助教学及智能测评系统使用手册——网络版.docx...

计算机应用基础课程辅助教学及智能测评系统使用手册(网络版)一、服务器端安装硬件要求如下:系统需求客户机CPU建议 Pentium m 800 MHz 以上内存512 MB以上系统要求Windows XP SP3IBS(IE7) Office2007具体安装步骤如下:文件,出现如下画面,选择…

主攻计算机专业英语翻译,湖师大“博导”黄振定,主攻“翻译学”

黄振定教授黄振定,男,1950年11月生,汉族,江西永新人。英语语言文学博士导师(翻译学、语言学方向),湖南师范大学外语学院和哲学系教授、硕士生导师。翻译系主任、翻译研究所所长。湖南省社科联五届委员会委员&#xff0…

计算机二级选择题考word基础知识吗,计算机二级ms office只考选择题吗?好考吗

满意答案liqiwt522014.09.20采纳率:46% 等级:8已帮助:4259人这个计算机二级MS office高级应用是今年新增加的科目,从今年(2013)9月份开始开考,知识点大体上包括计算机基础知识、word应用、excel应用和powerpoint应用…

html列表拖拽排序插件,JS拖拽排序插件Sortable.js用法实例分析

本文实例讲述了JS拖拽排序插件Sortable.js用法。分享给大家供大家参考,具体如下:最近由于项目功能设计的原因,需要对table中的行实现拖拽排序功能,找来找去发现Sortable.js能很好的满足这个需求,而且它还是开源的&…

信息学奥赛课课通VS中学生计算机,数学奥赛VS信息学奥赛 孩子们该如何选择

同是奥赛,为什么越来越多的孩子选了信息学?今年3月,教育部正式发布通知:全面取消中学奥赛等5项全国性高考加分项目。这个消息对很多有志于让孩子“走捷径”的家长而言,可谓晴空霹雳,升学道路上突然没了“加分”可怎么办&#xff…