带头节点的双向循环链表(A two-way circular list node to take the lead).docVIP

带头节点的双向循环链表(A two-way circular list node to take the lead).doc

  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文档。上传文档
查看更多
带头节点的双向循环链表(A two-way circular list node to take the lead)

带头节点的双向循环链表(A two-way circular list node to take the lead) #包含iostream 使用名称空间; 模板类:类dcchain; 模板类:类dcchainiterator; 模板 类dcnode { 朋友dcchain T类; 朋友dcchainiterator T类; 私人: T数据; DCNode T *左,右; }; #包括“dcnode。” #包含iostream 使用名称空间; 模板类:类dcchainiterator; 模板 类dcchain { 朋友dcchainiterator T类; 公共: dcchain(); ~ dcchain(); 国际length();/ /不包括头结点的长度 布尔找到(int k,t和x);//寻找链表中第K个元素,并放入X dcchain T和插入(int k,const T x);//把X插入到第K个元素后 dcchain T及删除(int k,t和x);//删除第K个元素,并把值放入X int搜索(常量x和x); 输出(ostream out); 私人: DCNode T * HeadNode; }; 模板 dcchain T::dcchain() { 头=新dcnode T; 头-右=头; 头-左=头; } 模板 dcchain T::~ dcchain() { DCNode T * * P,Q; P =头-右; 而(P!=头) { q = P 右; 删除P; p=q; } 头= null; } 模板 dcchain T及dcchain T::插入(int k,const T和X) { /如果(k<0) / /把outofbounds(); DCNode T×P =头-右; 对于(int索引= 1;索引索引和索引+ +) p = P 右; /如果(k 0和!P) / /把outofbounds(); DCNode T * Y =新dcnode T; 数据= x; 右; 右 左= Y; p =右= y; y =左= P; 返回*; } 模板 dcchain T及dcchain T::删除(int k,T和X) { //如果(K<1 | |头-右=头) / /把outofbounds; DCNode T×P =头-右; 如果(k=1) { 头-右= P -右; P -右-左=头; } 其他的 { DCNode T *q =头-右; 为(int index = 1;指数小于k-1 Q;指数+ +) q=右; 如果(!问| |!q右) 把outofbounds(); p=q -右; q 右=右; x = P 数据; 删除P; 返回*; } } 模板 国际dcchain T::length() { int长度= 0; DCNode T×P =头-右; 而(P!=头) { 长度+; p = P 右; } 返回的长度; } 模板 布尔dcchain T::找到(int k,T和X) { 如果(k<1)返回false; DCNode T×P =头-右; int索引= 1; 而(指数<K) { p = P 右; 索引+; } 如果(p) { x = P 数据; 返回true; } 返回false; } 模板 国际dcchain T::搜索(const T和X) { DCNode T×P =头-右; int索引= 1; 而(P·P·P)数据!= x) { p = P 右; 索引+; } 如果(p)返回指数; 返回0; } 模板 无效dcchain T::输出(ostream out) { DCNode T * P; 为(P =头-右;P!=头;P = P -右) 输出数据; } / /重载 模板 ostream 操作符(ostream,const DCChain T和X) { x.output(出); 回来了; } 模板 类dcchainiterator { 公共: T *初始化(const dcchain T C) { c.headnode头=; 位置= c.headnode -右; 如果(地点) 返回和位置数据; 返回0; } T * next() { 位置=位置右; 如果(位置=头)返回0; 如果(位置)返回和位置数据; 返回0; } 私人: DCNode T *位置; DCNode T *头; }; #包括“dcchain。” #包括“dcchainiterator。” #包含iostream 使用名称空间; 国际main() { int=1111; dcchain 一个int; a.insert(0,1); a.insert(1,2); 布尔B = a.find(2,X); cout x endl; dc

文档评论(0)

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

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

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档