- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
约瑟夫(Josephu)环C课程设计数据结构
目录
1 前言 1
1.1背景和意义 1
1.2设计的原理、方法和主要内容 1
2 正文 1
2.1设计的目的和意义 1
2.2目标与总体方案 2
2.3设计方法和内容 2
2.3.1Josphu链表的实现 2
2.3.2设计程序 3
2.4设计创新和关键技术 8
2.4.1设计创新 8
2.4.2关键技术 8
2.5结论 8
3 致谢 9
参考文献 9
附录A 源程序的清单 9
前言
1.1背景和意义
数据是计算机化的信息,它是计算机可以直接处理的最基本和最重要的对象。无论是进行科学计算或数据处理、过程控制以及对文件的存储和检索及数据库技术应用等,都是对数据进行加工处理的过程。因此,要设计出一个结构好效率高的程序,必须研究数据的特性及数据间的相互关系及其对应的存储表示,并利用这些特性putin()函数。JosephuLink()函数能构造一个空链表而putin()函数则往其中放入初始值。
template class T
JosephuLinkT::JosephuLink() //利用头插法定义构造函数
{
head=new NodeT;
}
template class T
void JosephuLinkT::putin()
{
int i;
cinn;
if(n1)
cout输入参数错误!endl;
head-data=1;
tail=head;
for(i=2;i=n;i++)
{
p=new NodeT;
p-data=i;
tail-next=p;
tail=p;
}
cout构建的Josephu链表为:endl;
tail-next=head;
p=head;
for(i=1;i=n;i++)
{
coutp-data ;
p=p-next;
}
coutendl;
}
如图2-3所示:
图2-3 程序图
(2).插入操作
插入操作较为简单只是对以前链表的该操作做了一些简单的修改就能运用于该程序,插入操作用的是Insert()函数。
template class T
bool JosephuLinkT::Insert() //插入
{
int loc;
T x;
cout输入要插入位子:;
cinloc;
cout请输入要插入的数:;
cinx;
if(loc1) //判断位置是否合法
{
cout输入参数错误,插入失败!endl;
return false;
}
NodeT*p=head-next;
for(int i=1;iloc-1;i++)
p=p-next;
NodeT*m=new NodeT;
m-data=x;
if(loc-1!=0)
{
m-next=p-next;
p-next=m;
}
else
{
m-next=head-next;
head-next=m;
}
cout新的数列为:;
n++;
return true;
}
(3).删除操作
同插入操作一样删除操作也是利用的以前对链表的操作加以简单改编而成,在本程序中删除操作为Delete函数template class T
bool JosephuLinkT::Delete() //删除
{
int loc;
T x;
cout请输入要删除的位子:;
cinloc;
if(loc1||head==NULL) //判断位置是否合法
return false;
NodeT*p=head;
if(loc==1)
head=head-next;
else
{
NodeT*q=head;
for(int i=0;iloc-1;i++)
q=q-next;
p=q-next;
q-next=p-next;
}
x=p-data;
delete p;
n--;
return true;
}
(4).Josephu操作
Josephu操作为本程序的重点,在本程序中我是利用了一个Josephu函数来解决该问题的,该函数是通过不断的循环、淘汰、再循环、再淘汰直到将Josephu链表中的所有元素被删除。函数如下:
template class T
int JosephuLinkT:: Josephu()
{
int m, k;
int i;
cout请输入执行中的每隔几位数淘汰一个元素:endl;
cinm;
cout请输入从第几个数开始执行:endl;
cink;
p=head;
for(i=1;ik;i++)
p=
您可能关注的文档
最近下载
- 统编小学语文五年级下册作业设计(全册).doc VIP
- 建筑工程图集 07CJ03-1:轻钢龙骨石膏板隔墙、吊顶(参考图集).pdf VIP
- 基于后悔理论和三支决策理论的智能通道匹配系统及方法.pdf VIP
- 驻场服务人员管理办法.docx VIP
- 一年级上册语文数学无纸笔测试精品课件.pptx VIP
- 煤矿井下机电设备完好性要求(KA25—2025).docx
- 金蝶云星空 V9.0_产品培训_财务_总账.pptx VIP
- 【倍福BECKHOFF】手册:TwinCAT 2 PLC入门教程V2.42.pdf VIP
- 电子教案《交往与合作》第二单元第四课组建自己小团队1.docx VIP
- 轨道交通供电系统故障诊断技术.pptx
原创力文档


文档评论(0)