第四章(5).建立词索引表

这篇博客详细介绍了如何建立图书索引表的过程,包括初始化索引表、从书目信息中提取关键词、按词典顺序插入索引表、插入新关键词、插入书号索引、查找和查询操作等步骤。同时,还涉及到常用词表的构造和管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include < stdio.h >
#include < stdlib.h >
#include < string.h >

#define  TRUE   1
#define  FALSE   0
#define  OK    1
#define  ERROR   0
#define  OVERFLOW  -1

#define  MaxBookNum  1000    //假设只对1000本书建立索引表
#define  MaxKeyNum  2500    //索引表的最大容量
#define  MaxLineLen  500     //书目串的最大长度
#define  MaxWordNum  10     //词表的最大容量
typedef  int  ElemType ; //定义链表数据元素类型为整型(书号类型)

typedef struct
{
 char *ch;
 int length;
}HString;

typedef struct LNode
{
 ElemType data;
 struct LNode *next;
}LNode,*LinkList;

void InitList(LinkList *L) ;
void PrintList(LinkList L) ;
ElemType GetElem(LinkList L, int i, ElemType *e) ;
int LocateElem(LinkList L,ElemType e) ;
void DestroyList(LinkList L) ;

void InitString(HString *T) ;
void StrAssign( HString *T, char *cha) ;
void StrCopy( HString *T , HString S ) ;
void StrPrint(HString T, FILE *fp) ;
void ClearString(HString *T) ;
int StrCompare(HString S,HString T) ;

//--------------------------------------------------------//

typedef struct {
 char item[ 20 ][ 20 ] ; //字符串的数组
 int  last ;    //词表的长度
} WordListType ;    //词表类型(顺序表)

typedef struct {
 HString  key ;   //关键词
 LinkList bnolist ;  //存放书号索引的链表
} IdxTermType ;     //索引项类型

typedef struct {
 IdxTermType item[ MaxKeyNum + 1 ] ;
 int   last ;
} IdxListType ;     //索引表类型(有序表)

//主要变量
char buf[ 256 ] ;   //书目串缓冲区
WordListType wdlist ;   //词表
HString oftenwords[ 7 ] ;  //常用词表


//---------------------Basic Operation---------------------//

void InitIdxList( IdxListType *idxlist ) ;    //初始化,置索引表idxlist为空表,且在idxlist.item[0]设一空串
void GetLine( FILE *fp ) ;        //从文件中读入一个书目信息到书目串缓冲区buf
void ExtractKeyWord( ElemType *bno ) ;     //从书目串缓冲区提取书名关键词到词表wdlist,书号存入bno
int InsIdxList( IdxListType *idxlist , ElemType bno ) ; //将书号为bno的书名关键词按词典顺序插入索引表idxlist
void PutText( FILE *fp , IdxListType idxlist ) ;  //将生成的索引表idxlist输入到文件中

//---------------------For Insert--------------------------//

void GetWord( int i , HString *wd ) ;     //用wd返回词表wdlist中第i个关键词
int Locate( IdxListType idxlist , HString wd , int *b );//在索引表idxlist中插叙是否存在与wd相等关键词.若存在,则返回其在索引表中的位置

题目采自 《数据结构题集》(c语言版)(严蔚敏`吴伟民)6.3 图书管理,最大的难度在于要求用B树对书号进行索引。 设计语言:C语言 编译环境: VC++6.0 里面包含完整的源程序和报告文档,程序为dos界面,有彩色菜单,对数据显示实现表格化……本课程设计成绩为优秀。 源程序有注释,报告文档完全按要求,包括所用数据结构的描述与实现、算法的时空分析等都包括在内。 程序所能达到的功能 1图书采编入库(用B树对书号建立索引) 2清除库存 3图书借阅 4图书归还 5图书预约 6列出某著者全部著作名 7列出某种书的状态(包括图书基本信息和该书借者名单、 预约者名单) 8每次插入或删除一个关键字后以凹入表显示B树的状态 9把一次会话过程中的全部人机对话记录入一个日志文件中 10在程序主界面显示当前系统时间 一、 需求分析 1. 书号和借阅证号、库存量、出版年份用整型表示;书名用20位字符型数组,著者和借阅者姓名用30位字符型数组表示;图书价格用浮点型表示。图书入库时输入图书的书号、书名、著者、总量等完整信息,清除库存时输入图书书号,借阅和归还时输入书号和借阅者证号,姓名等信息,并记录系统时间为借书日期。 2. 借书和归还时显示图书的信息。插入、删除后用凹入表显示以书号建立的B树状态。查看图书状态,以表格显示图书的基本信息,借阅者名单和预约者名单。 ……………… 课程设计清单: base.h //全程常量、全局变量和公共函数等 btree.h //B树类型单元 library.h //书库类型单元 main.cpp //主程序 bookiofo.dat //图书信息文件 borrower.dat //借书者姓名文件 bespeaker.dat //预约者姓名文件 main.exe //编译得到的可执行文件 数据结构课程设计实验报告-图书管理.doc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值