欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    数据结构C语言版 索引表.docx

    • 资源ID:10044275       资源大小:20.17KB        全文页数:20页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数据结构C语言版 索引表.docx

    1、数据结构C语言版 索引表数据结构C语言版 索引表.txt明骚易躲,暗贱难防。佛祖曰:你俩就是大傻B!当白天又一次把黑夜按翻在床上的时候,太阳就出生了/* 数据结构C语言版 索引表 P86-P87 编译环境:Dev-C+ 4.9.9.2 日期:2011年2月8日 说明一下,常用词表文件的数据,第一行是词表含有的常用词个数,然 后每一行一个词,都是以回车符结束的。 书目文件,每一行前面三个字符是书号,后面紧接着是书名,而没有空 格,每一行一本书,以回车符结束。文件以一个空行结束。 注意是回车符结束,这个要用编辑器显示了回车符的才能够看到,我就 是不小心删了,然后一直出错的。 */#include

    2、#include #include #include typedef int ElemType;/ 串的堆分配存储 typedef struct char *ch; / 若是非空串,则按串长分配存储区,否则ch为NULL int length; / 串长度 HString;/ 带头结点的线性链表类型 typedef struct LNode / 结点类型 ElemType data; struct LNode *next;LNode,*Link,*Position;typedef struct LinkList / 链表类型 Link head,tail; / 分别指向线性链表中的头结点和最后

    3、一个结点 int len; / 指示线性链表中数据元素的个数 LinkList;/这里将有三个表,词表(一本书中的关键词),索引表,常用词表#define MaxKeyNum 25 / 索引表的最大容量(关键词的最大数) #define MaxLineLen 100 / 书目串(书名+书号)buf的最大长度 #define MaxWordNum 10 / 词表(一本书的关键词)的最大容量 #define MaxNoIdx 10 / 常用词(仅指大写)的最大数 typedef struct _WordListType char *itemMaxWordNum; / 词表(字符串)指针数组 int

    4、 last; / 词的数量 WordListType; / 词表类型(顺序表) typedef struct HString key; / 关键词(堆分配类型,HString.h) LinkList bnolist; / 存放书号索引的链表(LinkList.h) IdxTermType; / 索引项类型 typedef struct IdxTermType itemMaxKeyNum+1; int last; / 关键词的个数 IdxListType; / 索引表类型(有序表) typedef struct char *itemMaxNoIdx; / 常用词表指针数组 int last; /

    5、 常用词的数量 NoIdxType; / 常用词表类型(有序表)/ 全局变量 char bufMaxLineLen+1 = 0; / 当前书目串(包括0) WordListType wdlist; / 暂存一本书的词表 NoIdxType noidx; / 常用词表 #define MaxBookNum 10 / 假设只对10本书建索引表 #define MaxKeyNum 25 / 索引表的最大容量(关键词的最大数) #define MaxLineLen 100 / 书目串(书名+书号)buf的最大长度 typedef struct char booknameMaxLineLen; / 书目

    6、串 int bookno; / 书号 BookTermType; / 书目项类型 typedef struct BookListType / 书目表类型(有序表) BookTermType itemMaxBookNum; int last; / 书目的数量 BookListType; / 书目表类型(有序表)/ 生成一个其值等于串常量chars的串T int StrAssign(HString *T, char *chars) int i,j; if(*T).ch) free(*T).ch); / 释放T原有空间 i = strlen(chars); / 求chars的长度i if(!i) /

    7、 chars的长度为0 (*T).ch = NULL; (*T).length = 0; else / chars的长度不为0 (*T).ch = (char*)malloc(i*sizeof(char); / 分配串空间 if(!(*T).ch) / 分配串空间失败 exit(0); for(j = 0; j T,则返回值0;若S=T,则返回值=0;若ST,则返回值0int StrCompare(HString S,HString T) int i; for(i=0;iS.length & iT.length;+i) if(S.chi != T.chi) return S.chi-T.chi

    8、; return S.length-T.length;/ 由串S复制得串Tint StrCopy(HString *T,HString S) int i; if(*T).ch) free(*T).ch); / 释放T原有空间 (*T).ch=(char*)malloc(S.length*sizeof(char); / 分配串空间 if(!(*T).ch) / 分配串空间失败 exit(0); for(i=0;inext=NULL; /将头尾结点都分配好,并将其下一结点置空 (*L).head=(*L).tail=p; (*L).len=0; /初始为0 return 1; else / 分配失

    9、败返回 return 0;/ 分配由p指向的值为e的结点,并返回1;若分配失败。则返回0int MakeNode(Link *p,ElemType e) *p = (Link)malloc(sizeof(LNode); /动态分配一个Link空间 if(!*p) return 0; (*p)-data = e; / 赋值 return 1;/ 将指针s(s-data为第一个数据元素)所指(彼此以指针相链,以NULL结尾)的 / 一串结点链接在线性链表L的最后一个结点之后,并改变链表L的尾指针指向新 / 的尾结点 int Append(LinkList *L,Link s) int i=1; /

    10、记录s为头的串结点个数 (*L).tail-next=s; /尾结点指向s while(s-next) s=s-next; i+; (*L).tail=s; (*L).len+=i; return 1;/ 置索引表idxlist为空表,且在idxliat.item0设一空串 void InitIdxList(IdxListType *idxlist) (*idxlist).last=0; /将索引表的关键词个数置为0 / 将索引表的关键词块存储初始化为0 InitString(&(*idxlist).item0.key); / 将索引表的索引项的书号索引初始化为0 InitList(&(*id

    11、xlist).item0.bnolist);/ 从buf中提取书名关键词到词表wdlist,书号存入BookNo void ExtractKeyWord(int *BookNo) int i,l, f = 1; / f是字符串结束标志 0: 结束 1: 未结束 char *s1,*s2; if(buf09) / buf的首字母不是数字 exit(0); / 释放上一个书目在词表wdlist的存储空间,相当于初始化词表 for(i = 1;i =A&s10=Z) / 单词首字母为大写 / 写入词表 / 生成串空间(包括0) wdlist.itemwdlist.last = (char *)mal

    12、loc(l+1)*sizeof(char); for(i = 0; i l; i+) wdlist.itemwdlist.lasti = s1i; / 写入词表 wdlist.itemwdlist.lastl = 0; /记得加上字符串结束符 for(i=0;i0; -i) ; if(m=0) / 找到 *b=1; return i; else *b=0; return i+1; / 在索引表idxlist的第i项上插入新关键词wd,并初始化书号索引的链表为空表 void InsertNewKey(IdxListType *idxlist,int i,HString wd) int j; In

    13、itList(&(*idxlist).item(*idxlist).last+1.bnolist); for(j=(*idxlist).last;j=i;-j) / 后移索引项 (*idxlist).itemj+1=(*idxlist).itemj; InitString(&(*idxlist).itemi.key); StrCopy(&(*idxlist).itemi.key,wd); / 串拷贝插入新的索引项 InitList(&(*idxlist).itemi.bnolist); / 初始化书号索引表为空表 (*idxlist).last+;/ 在索引表idxlist的第i项中插入书号为

    14、bno的索引void InsertBook(IdxListType *idxlist,int i,int bno) Link p; if(!MakeNode(&p,bno) / 分配失败 LinkList.c exit(0); p-next=NULL; Append(&(*idxlist).itemi.bnolist,p); / 插入新的书号索引/ 将书号为bno的关键词插入索引表 void InsIdxList(IdxListType *idxlist,int bno) int i,j; int b; HString wd; InitString(&wd); / bo4-2.c for(i=

    15、0;iwdlist.last;i+) GetWord(i,&wd); j=Locate(idxlist,wd,&b); if(!b) InsertNewKey(idxlist,j,wd); / 插入新的索引项 InsertBook(idxlist,j,bno); / 插入书号索引 / 将生成的索引表idxlist输出到文件fvoid PutText(FILE *f,IdxListType idxlist) int i,j; Link p; fprintf(f,%dn,idxlist.last); for(i=1;i=idxlist.last;i+) for(j=0;jidxlist.itemi

    16、.key.length;j+) fprintf(f,%c,idxlist.itemi.key.chj); fprintf(f,n%dn,idxlist.itemi.bnolist.len); p=idxlist.itemi.bnolist.head; for(j=1;jnext; fprintf(f,%d ,p-data); fprintf(f,n); int main() FILE *f; IdxListType idxlist; / 索引表 int BookNo; / 书号 int i,k,l; BookListType booklist; / 书目表 HString ch; / 索引字符

    17、串 Link p; f = fopen(常用词表.txt,r); / 打开常用词文件 if(!f) exit(0); printf(常用词表中的内容:n); fscanf(f, %d, &noidx.last); / 常用词个数 for(k = 0; k noidx.last; k+) / 把常用词文件的内容拷到noidx中 fscanf(f, %s, buf); printf(%sn, buf); l = strlen(buf); noidx.itemk = (char*)malloc(l * sizeof(char); strcpy(noidx.itemk, buf); fclose(f)

    18、; f = fopen(书目文件.txt,r); / 打开书目文件 if(!f) exit(0); InitIdxList(&idxlist); / 初始化索引表idxlist为空 wdlist.last = 0; / 词表长度初值为0 printf(书目文件中的内容:n); while(!feof(f) fgets(buf, MaxLineLen, f); l = strlen(buf); printf(%sn, buf); if(l = 1) break; / 从buf中提取关键词到词表,书号存入BookNo ExtractKeyWord(&BookNo); InsIdxList(&idx

    19、list, BookNo); fclose(f); / 将生成的索引表idxlist输出到文件f f=fopen(关键词索引.txt,w); if(!f) exit(0); PutText(f, idxlist); / 将生成的索引表idxlist输出到文件f fclose(f); / 根据索引查询图书 InitString(&ch); / 初始化HString类型的变量 f=fopen(关键词索引.txt,r); / 打开书名关键词索引表文件 if(!f) exit(0); fscanf(f,%d,&idxlist.last); / 书名关键词个数 for(k=0;kidxlist.last

    20、;k+) / 把关键词文件的内容拷到idxlist中 fscanf(f,%s,buf); i=0; while(bufi) bufi+=tolower(bufi); / 字母转为小写 InitString(&idxlist.itemk.key); StrAssign(&idxlist.itemk.key,buf); InitList(&idxlist.itemk.bnolist); / 初始化书号链表 fscanf(f,%d,&i); for(l=0;lnext=NULL; Append(&idxlist.itemk.bnolist,p); / 插入新的书号索引 fclose(f); f=fo

    21、pen(书目文件.txt,r); / 打开书目文件 if(!f) exit(0); i=0; while(!feof(f) / 把书目文件的内容拷到booklist中 fgets(buf,MaxLineLen,f); / 前三位为书号 booklist.itemi.bookno = (buf0-0)*100+(buf1-0)*10+(buf2-0); strcpy(booklist.itemi.bookname,buf); i+; booklist.last=i; printf(请输入书目的关键词(一个); scanf(%s,buf); i=0; while(bufi) bufi+=tolow

    22、er(bufi); / 字母转为小写 StrAssign(&ch,buf); i=0; do k=StrCompare(ch,idxlist.itemi.key); / HString.c i+; while(k&inext; while(p) l=0; while(ldata!=booklist.iteml.bookno) l+; if(lnext; else printf(没找到n); system(pause); return 0;/*常用词表.txt的内容: 5AAnInOfThe书目文件.txt 的内容:005Computer Data Structures010Introduction to Data Structures023Fundamentals of Data Structures034The Desig


    注意事项

    本文(数据结构C语言版 索引表.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

    经营许可证编号:鄂ICP备2022015515号-1

    收起
    展开