数据结构C语言版串块链存储表示和实现九.docxVIP

数据结构C语言版串块链存储表示和实现九.docx

  1. 1、本文档共28页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构C语言版串块链存储表示和实现九.docx

数据结构C语言版串的块链存储表示和实现九 祸兮福之所倚福兮祸之所伏。千淘万漉虽辛苦吹尽狂沙始到金。二十四桥明月夜玉人何处教吹箫。眼前道无经纬皮里春秋空黑黄。/* 数据结构C语言版 串的块链存储表示和实现 78 编译环境:Dev-C++ 4.9.9.2 日期:2011年2月12日 */ #include lt;stdio.hgt; #include lt;malloc.hgt; #include lt;stdlib.hgt; #include lt;string.hgt; // LString.h 串的块链存储表示 #define CHUNKSIZE 4 // 可由用户定义的块大小 tyedef struct Chunk { char ch[CHUNKSIZE]; //块的数据域 struct Chunk *next; //块的指针域 }Chunk; tyedef struct { Chunk *head, // 串的头指针 *tail; // 串的尾指针 int curlen; // 串的当前长度 }LString; char blank = #39;##39;; // 全局变量,用于填补空余 // 初始化(产生空串)字符串T。 void InitString(LString *T) { (*T).curlen=0; (*T).head=NULL; (*T).tail=NULL; } // 生成一个其值等于chars的串T(要求chars中不包含填补空余的字符) // 成功返回1否则返回0 int StrAssign(LString *T,char *chars) { int i,j,k,l; Chunk *,*q; i=strlen(chars); // i为串的长度 if(!i||strchr(chars,blank)) // 串长为0或chars中包含填补空余的字符 return 0; (*T).curlen=i; j=i/CHUNKSIZE; // j为块链的结点数块的个数 if(i%CHUNKSIZE) //不足一个块的当成一个块即块数加1 j++; for(k=0;klt;j;k++) { =(Chunk*)malloc(sizeof(Chunk)); if(!) return 0; if(k==0) // 第一个链块 (*T).head=q=; else { q-gt;next=; q=; } for(l=0;llt;CHUNKSIZEam;am;*chars;l++) *(q-gt;ch+l)=*chars++; if(!*chars) // 最后一个链块 { (*T).tail=q; q-gt;next=NULL; for(;llt;CHUNKSIZE;l++) // 用填补空余的字符(blank=‘#’)填满链表 *(q-gt;ch+l)=blank; } } return 1; } // 由串S复制得串T(连填补空余的字符一块拷贝) int StrCoy(LString *T,LString S) { Chunk *h=S.head,*,*q; (*T).curlen=S.curlen; if(h) { =(*T).head=(Chunk*)malloc(sizeof(Chunk)); *=*h; // 复制1个结点 h=h-gt;next; while(h) //没到队尾继续复制块 { q=; =(Chunk*)malloc(sizeof(Chunk)); q-gt;next=; *=*h; h=h-gt;next; } -gt;next=NULL; (*T).tail=; return 1; } else return 0; } // 若S为空串,则返回1,否则返回0 int StrEmty(LString S) { if(S.curlen) // 非空 return 0; else return 1; } // 若Sgt;T,则返回值gt;0;若S=T,则返回值=0;若Slt;T,则返回值lt;0 int StrComare(LString S,LString T) { int i=0; // i为当前待比较字符在S,T串中的位置 Chunk *s=S.head,*t=T.head; // s,t分别指向S和T的待比较块 int js=0,jt=0; // js,jt分别指示S和T的待比较字符在块中的位序 while(ilt;S.curlenam;am;ilt;T.curlen) { i++; // 分别找S和T的第i个字符 while(*(s-g

文档评论(0)

peace0308 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档