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