
#include<iostream>
#include<fstream>
#include<string>
#include<ctype.h>
#include"HString.h"
#include"LinkList.h"
using namespace std;
#define MaxBookNum 6 //假设只对6本书建立索引表
#define MaxKeyNum 30 //索引表的最大容量
#define MaxLineLen 30 //书目串的最大长度
#define MaxWordNum 10 //词表的最大容量
#define MaxWordLen 30 //关键词的最大长度
typedef struct{
string *item[MaxWordNum];//字符串
int last;//词表的长度
}WordListType; // 词表的类型(顺序表)
typedef struct{
HString key;//关键词
LinkList bnolist;//存放书号索引的链表
}IdxTermType; //索引项类型
typedef struct{
IdxTermType item[MaxKeyNum+1];
int last;
}IdxListType; //索引表类型(有序表)
string buf;//书目串缓冲区
int BookNo[3];//数组存放书号
WordListType wdlist;//词表
string str[9]={"a","an","of","to","and","the","if","many","more"};//常用词表
class IdxlistOperation
{
public:
//建立一个书目文件
void BookFile(void);
//初始化操作,置索引表为idxlist为空表,且在idxlist[0]设一空串
void InitIdxList(IdxListType &idxlist);
//从文件f读入一个书目信息到书目缓冲区buf
void GetLine(ifstream &infile);
//从buf中提取书名关键词到词表wdlist,书号存入bno
void ExtractKeyWord(int *bno);
//将书号为BookNo[3]的书名关键词按词典顺序插入索引表idxlist
Status InsIdxList(IdxListType &idxlist,int *bno);
//将生成的索引表输出到文件g
void PutText(ofstream &outfile,IdxListType idxlist);
};//IdxlistOperation
void IdxlistOperation::BookFile(void)//建立书目文件
{
s