数据结构--第四章串教案.pptVIP

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

堆串的定义为: typedef struct {int len; int start; } HeapString; 其中len域指示串的长度, start域指示串的起始位置。借助此结构可以在串名和串值之间建立一个对应关系,称为串名的存储映像。系统中所有串名的存储映像构成一个符号表。 * 堆串的存储映象示例 a=a program,b=string ,c=process,free=23。 a p r o g r a m s t r i n g p r o c e s s Heap[MAXSIZE] free=23 符号名 len start a 9 0 b 7 9 c 7 16 符号表 * 用C语言中的“堆”实现堆串,其定义为: typedef struct { char * ch; int len; } HString; 其中len域指示串的长度,ch域指示串的起始地址。 * 堆串的基本操作 (1) 串赋值函数 StrAssign(s,tval) /*将字符常量tval的值赋给串s */ HString *s; char *tval; {int len,i=0; if (s-ch!=NULL) free(s-ch); while (tval[i]!=\0) i++; len=i; if (len) {s-ch=(char *)malloc(len); if (s-ch==NULL) return(0); for (i=0;ilen;i++) s-ch[i]=tval[i]; } else s-ch=NULL; s-len=len; return(1); } * (2) 串插入函数 StrInsert(s,pos,t) /*在串s中序号为pos的字符之前插入串t */ HString *s,t; int pos; {int i;char *temp; if (pos0 || poss-len || s-len==0) return(0); temp=(char *)malloc(s-len + t.len); if (temp==NULL) return(0); for (i=0;ipos;i++) temp[i]=s-ch[i]; for (i=0;it.len;i++) temp[i+pos]=t.ch[i]; for (i=pos;is-len;i++) temp[i + t.len]=s-ch[i]; s-len+=t.len; free(s-ch);s-ch=temp; return(1); } * (3) 串删除函数 StrDelete(s,pos,len) /*在串s中删除从序号pos起len个字符 */ HString *s; int pos,len; {int i; char *temp; if (pos0 || pos(s-len - len)) return(0); temp=(char *)malloc(s-len - len); if (temp==NULL) return(0); for (i=0;ipos;i++) temp[i]=s-ch[i]; for (i=pos;is-len - len;i++) temp[i]=s-ch[i+len]; s-len=s-len-len; free(s-ch);s-ch=temp; return(1); } * (4) 串复制函数 StrCopy(s,t) /*将串t的值复制到串s中 */ HString *s,t; {int i; s-ch=(char *)malloc(t.len); if (s-ch==NULL) return(0); for (i=0;it.len;i++) s-ch[i]=t.ch[i]; s-len=t.len; return(1); } * (5) 判空函数 StrEmpty(s) /*若串s为空(即串长为0),则返回1,否则返回0 */ HString s; { if (s.len==0) return(1); else return(0); } * (6) 串比较函数 StrCompare(s,t) /*若串s和t相等,则返回0,若st返回1,若st返回-1 */ HString s,t; { int i; for (i=0;is.lenit.len;i++) if (s.ch[i]!=t.ch[i]) return(s.ch[i] - t.ch[i]); return(s.len - t.len); } * (7) 求串长函数 StrLength(s) /*返回串s的长度 */ HString s; { return(s.len)

文档评论(0)

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

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

1亿VIP精品文档

相关文档