数据结构第4章串资料.pptVIP

  1. 1、本文档共64页,可阅读全部内容。
  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文档。上传文档
查看更多
(3)串复制StrCopy(t)   将串对象t复制给当前串对象,这里也是采用重载“=”运算符实现的。对应的算法如下: LinkStringClass LinkStringClass::operator=(LinkStringClass t) //重载赋值运算符 {  LinkNode *p=t.head-next,*q,*r;   r=head; //r始终指向尾结点   while (p!=NULL) //将t中结点*p复制产生结点*q   { q=new LinkNode(); q-data=p-data; r-next=q; r=q; //将*q结点插入到尾部 p=p-next;   }   r-next=NULL; //尾结点的next置为NULL   return *this; } (4)求串长StrLength() 返回当前链串对象中的字符个数。对应的算法如下: int LinkStringClass::StrLength() //求串长度 {  int i=0;   LinkNode *p=head-next; //p指向第一个字符结点   while (p!=NULL)   { i++; p=p-next; //p移到下一个字符结点   }   return i; } (5)串连接Concat(t)   将当前链串和链串t的所有字符连接在一起形成新链串,并返回这个新串对象,并不改变当前串对象和串对象t的内容,这里采用重载“+”运算符实现的。对应的算法如下: LinkStringClass LinkStringClass::operator+(LinkStringClass t) {  static LinkStringClass nstr; //新建一个空串   LinkNode *p=head-next,*q,*r;   r=nstr.head;   while (p!=NULL) //将当前链串的所有结点复制到nstr   { q=new LinkNode(); q-data=p-data; r-next=q; r=q; //将*q结点插入到尾部 p=p-next;   }   p=t.head-next;   while (p!=NULL) //将链串t的所有结点复制到nstr   { q=new LinkNode(); q-data=p-data; r-next=q; r=q; //将*q结点插入到尾部 p=p-next;   }   r-next=NULL; //尾结点的next置为NULL   return nstr; //返回新建的链串 }   例如,链串对象s和t连接产生新串对象s1的结果如图4.11所示。 (6)求子串SubStr(i,j)   返回当前链串中从第i个字符开始的连续j个字符组成的子链串,并返回这个新子串。当参数不正确时返回一个空串。以下采用尾插法建立链串nstr并返回。对应的算法如下: LinkStringClass LinkStringClass::SubStr(int i,int j) //求子串 {  static LinkStringClass nstr; //新建一个空串   int k;   LinkNode *p=head-next,*q,*r;   r=nstr.head; //r指向新建链表的尾结点   if (i=0 || iStrLength() || j0 || i+j-1StrLength()) return nstr; //参数不正确时返回空串   for (k=0;ki-1;k++) p=p-next;   for (k=1;k=j;k++) //将s的第i个结点开始的j个结点复制到nstr   { q=new LinkNode(); q-data=p-data; r-next=q; r=q; //将*q结点插入到尾部 p=p-next;   }   r-next=NULL; //尾结点的next置为NULL   return nstr; //返回新建的链串 } 例如,由串对象s产生子串t对象的结果如图4.12所示。 (7)串插入InsStr(i,s)   将链串s插入到当前链串中的第i个位置产生一个新链串,并返回这个新串对象。当参数不正确时返回一个空串。以下采用尾插法建立链串nstr并返回。对应的算法如下: LinkStringClass LinkStringClass::InsStr(int i,LinkStringClass s) {  static LinkStringClass nstr; //新建一个空串   int k;   LinkNod

文档评论(0)

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

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

1亿VIP精品文档

相关文档