图书索引程序.docxVIP

  • 23
  • 0
  • 约8.72千字
  • 约 12页
  • 2016-12-03 发布于重庆
  • 举报
图书索引程序

图书索引程序问题:图书馆需要对图书信息生成索引表(如下),以便用户在输入关键词时能查询到相应的图书,下面介绍生成索引表的思路。算法思路:首先得准备书目文件与非关键词文件(如下)书目文件非关键词文件依次从书目文件中读入每一行的信息(字符串),从该字符串中提取书号,以及关键词(需要参考非关键词文件判断哪些单词是关键词),有序插入关键词链表,并附上拥有该关键词的书号,直至书目文件读完。数据描述:非关键词——链表theofaanandto头指针关键词——嵌套链表algorithmsanalysiscomputer?034034050005067034结构化设计:补充:程序中有对书号进行有序插入,即使书目信息无序也无关系fgets函数说明:每条书目信息长度不一,当终归有上限,对于非关键词也一样。因此只能一次读入整条书目信息,但是从该字符串中提取书号和关键词也是实现难点。使用该代码时记得要修改相应文件的位置信息,避免出错。局限:对于搜索功能,本程序的索引表没有从相应文件读入(懒),而是执行生成索引表功能去生成,在时间上增加了复杂度。不能实现中文版的图书索引系统(实力有限,不懂)。程序运行::生成索引表:图书搜索代码展示:#includestdio.h#includestdlib.h#includestring.h#includectype.h#define bookno_length 3 //书号长度统一为3,只适用于999本书 struct book_no//书号表的元素 {char *book_number;//指向书号的指针struct book_no *next;//指向下一个元素 };struct one_key//关键字表的元素{char *key;//指向关键字的指针int key_length;//关键字的长度struct book_no *head;//指向拥有该关键字的书号表的开头struct one_key *next;//指向下一个元素 };struct temptable//临时表,存储普通词表和书目信息文件每一行拥有的关键词{char *word;//指向单词的指针 int word_length;//单词的长度,长度相等才进行比较,提高效率 struct temptable *next;//下一个元素 };struct book_information{char book[100];struct book_information *next;};main(){void print_all_key_table(struct one_key *all_key);void search_book_information(struct one_key *all_key);void welcome(); void write_all_key_table(struct one_key *all_key);struct one_key *create_all_key_table();//创造有序关键词表 struct one_key *all_key=NULL;//关键字表的开头,带头结点welcome();int i;scanf(%d,i);while(i!=1i!=2){printf(输入出错重新录入!!!\n);scanf(%d,i);}switch(i){case 1:all_key=create_all_key_table();print_all_key_table(all_key);write_all_key_table(all_key);break;case 2: all_key=create_all_key_table();search_book_information(all_key);}}void welcome(){printf(*******************************************************\n\n);printf(欢迎来到图书索引系统!!\n\n);printf(*******************************************************\n\n);printf(1:生成索引文件\n2:查找图书\n);printf(请选择功能:);}struct one_key *create_all_key_table(){struct temptable *create_nokey_temptable();//创造非关键词词表 struct temptable *create_key_temptable(char buf[100],struct temptable *nokey_temptable);//创造关键词词表 char

文档评论(0)

1亿VIP精品文档

相关文档