- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
这是精心收集的精品经典资料,值得下载保存阅读!
带头节点的双向循环链表(国外英文资料)
# include iostream
使用名称空间std;
模板类T 类DCChain;
模板类T 类DCChainIterator;
模板类T
类DCNode
{
朋友类DCChain T ;
朋友类DCChainIterator T ;
私人:
T数据;
DCNode T *,*;
};
# include“DCNode.h”
# include iostream
使用名称空间std;
模板类T 类DCChainIterator;
模板类T
类DCChain
{
朋友类DCChainIterator T ;
公众:
DCChain();
~ DCChain();
int长度();/ /不包括头结点的长度
bool找到(int k,T x);/ /寻找链表中第k个元素,并放入x
DCChain T 插入(int k,const T x);/ /把x插入到第k个元素后
DCChain T 删除(int k,T x);/ /删除第k个元素,并把值放入x
int搜索(const T x);
无效的输出(上ostream);
私人:
DCNode T * HeadNode;
};
模板类T
DCChain T ::DCChain()
{
HeadNode = new DCNode T ;
HeadNode - 右= HeadNode;
HeadNode - 左= HeadNode;
}
模板类T
DCChain T ::~ DCChain()
{
DCNode T * p *问;
p = HeadNode - ;
而(p ! = HeadNode)
{
q = p - ;
删除p;
p =;
}
HeadNode =零;
}
模板类T
DCChain T DCChain T ::插入(int k,const T x)
{
/ /如果(k 0)
/ /把OutOfBounds();
DCNode T * p = HeadNode - ;
for(int指数= 1;指数 kp;指数+ +)
p = p - ;
/ /如果(p k 0 !)
/ /把OutOfBounds();
新DCNode DCNode T * y = T ;
y = x - 数据;
y - = p - ;
p - - 左= y;
p - = y;
y - 左= p;
返回*;
}
模板类T
DCChain T DCChain T ::删除(int k,T x)
{
/ /如果(k 1 | | HeadNode - 右= HeadNode)
/ /把OutOfBounds;
DCNode T * p = HeadNode - ;
如果(k = = 1)
{
HeadNode - 右= p - ;
p - - 左= HeadNode;
}
其他的
{
DCNode T * q = HeadNode - ;
for(int指数= 1;指数 k-1q;指数+ +)
q = q - ;
如果(!问| | ! q - 右)
把OutOfBounds();
p = - ;
q - 右= p - ;
x = p - 数据;
删除p;
返回*;
}
}
模板类T
int DCChain T ::长度()
{
int长度= 0;
DCNode T * p = HeadNode - ;
而(p ! = HeadNode)
{
长度+ +;
p = p - ;
}
返回长度;
}
模板类T
bool DCChain T ::找到(int k,T x)
{
如果(k 1)返回false;
DCNode T * p = HeadNode - ;
int指数= 1;
而(指数 kp)
{
p = p - ;
指数+ +;
}
如果(p)
{
x = p - 数据;
返回true;
}
返回错误;
}
模板类T
int DCChain T ::搜索(const T x)
{
DCNode T * p = HeadNode - ;
int指数= 1;而(pp - 数据! = x)
{
p = p - ;
指数+ +;
}
如果(p)回报指数;
返回0;
}
模板类T
空白DCChain T ::输出(上ostream位于)
{
DCNode T * p;
(p = HeadNode - 右;p ! = HeadNode;p = p - )
p - 数据”“;
}
/ /重载
模板类T
上ostream操作符 (上ostream,const DCChain T x)
{
x.Output(出);
返回;
}
文档评论(0)