约瑟夫问题程序

/*设有n人个坐围一在个桌圆围周现,第s个从开始人数,报数第m的人到列,

出然

后出从的列一下人个新开始重数报,数到m第的人又列出如此,复反知道有

人所部出列为全止

构造个一环的单链循表,链表内容由员人编号组为1~成n从,第s开始扫链

描,到第m时表输出该表链内序容,号删除此点节形成,单新表循环,重链以

复上操作直到

,链中仅有表个一点,输节出节的输出点顺。序

定义

了个一点类N节oed和个链表类L一stiN,ode为Lits的类元类,友Lits中类实现

如下的方:法howLsits)(显:示当链前内容,表uxhuan():是n单表链构循成环链

表,shacnhu(Ndo T*p:删)当除前节点,sji(n t,nin t,sin mt):对题问进

拟计模算,iEsptmy)({ertrn uehd=aN=ULL;}:判链表断是否空为,

app

nde(costnT va ue)l:在表链尾末上一加个点节,试类测Text对上述 类方法进

测设

程。序

:*/

#icnudl

>

in#ludech

siugnn meapsacestd ;

//

////////////////////////////

//

t

mpealtcla ss iLst

;

*/结点*/

emtlptae

casls Ndeo

{

frie n dcasls List

Tv lae;

Node* ent;x

odN(ien v,Ntod)

n{

v

laue=,nexv=n;t

}}

;/

//////////////////////////////

//

/*

表链*/

t

melpate

s

calss Lsti

{

ublpc:

iLits()

;L~ist);(

oivd showLsi(t);

void x

nuhan()u;

vo

i sdahnhcuN(doe p*;)

viodjs (itn ,nnt s,iin tm)

;

ool ibsmEtpy)(

{

rtuenrh ead==NLUL

;}

;void appne(cdons Ttva ue)l ;

rpvaiet

:

oNd* ead;

h;}

etmpaletc

T

ovdiL itshoLiswt()

Node{T>

;while(!=NUpL)L

{

cotu

aluv

'=pp->net;

x}

}

tem

plte

Li>tist()L

{

he

ad=UNL;

L

}

te

plmta

>istLT~Lis(t

{}

)

t

mepalet

>oivdL ist::appTndeT( )

v

{oNdeT>(T,vUNL);

L

odN ep=*had;e

i

fh(ade==NLUL

)

{

h

ead=;e

}

else

{wh

leip(>next!=N-LLU

)p=

p>-exnt

;

->neptxe=;

}

}

tmeplte

vidoLi t::uxhnaun)(

{

oNe

*=hepda;

w

ihle(-p>next=NULL!

){

=pp>nex-t

;

}

p>n-xeth=ead ;

}

tmelapetcls

v

id Liossh:nacu(Nohde p)

{*

oNe *T=ph

;

whlieh->(exnt!=)p

h=h-

n>ext

;

-h>nxte=p>-nex;

t

edlet p;

e}

templae

>ovdi iLt::j(ins tnint ,,isntm)

{

odeNp=*eha;d

odN *tmpe;

i

n ti;

//找

到第个s点结

ofri=(;i
)

=pp->netx;

ouc
wh

iel(n!1=

{)

/ 报/过数程

fo(r=i0i

)p=->pexn;t

/删除/数中的报第报号的结m

点oct-vluea

emp=t;p

p=->pnex;

stanhcu(thep)m;

/将/循链表的长度环1减

n

-;

-}

//输最后出个被删除一结点的数

cout值

;}

///

/////////////////////////////////////

//

clas

Tset

x{

ublpc:i

vidotext )(

{

/*

n为单

表链的长度

;为从开头sS第个结点处始报开

m为报数长度,报数的结m点将删被

*

/istit;

si

tni;

in n,t,sm;

ouc

cin>n>>s>>m>

;

/建/立个由一1,,2.3..组.的成单表链

or(f=0ii;n
)

istl.apepd(in+);

1

/显示/创所建的单表l链si

tlis.tshwoList);(

outc
;

/

将链表/lsi的首t相连尾,组单项成循链表环

lstix.uhnan();u

//瑟约夫题问理处链表

lis

.ts(jn,,m)s;

}}

;

///

/////////////////////////////////////////////////////////

//主/函

数int

mina)

({

Text t

;t

te.tx);

w(hlei()1}

retu{nr0 ;

}

/*设有n人个坐围一在个桌圆围周现,第s个从开始人数,报数第m的人到列,

出然

后出从的列一下人个新开始重数报,数到m第的人又列出如此,复反知道有

人所部出列为全止

构造个一环的单链循表,链表内容由员人编号组为1~成n从,第s开始扫链

描,到第m时表输出该表链内序容,号删除此点节形成,单新表循环,重链以

复上操作直到

,链中仅有表个一点,输节出节的输出点顺。序

定义

了个一点类N节oed和个链表类L一stiN,ode为Lits的类元类,友Lits中类实现

如下的方:法howLsits)(显:示当链前内容,表uxhuan():是n单表链构循成环链

表,shacnhu(Ndo T*p:删)当除前节点,sji(n t,nin t,sin mt):对题问进

拟计模算,iEsptmy)({ertrn uehd=aN=ULL;}:判链表断是否空为,

app

nde(costnT va ue)l:在表链尾末上一加个点节,试类测Text对上述 类方法进

测设

程。序

:*/

#icnudl

>

in#ludech

siugnn meapsacestd ;

//

////////////////////////////

//

t

mpealtcla ss iLst

;

*/结点*/

emtlptae

casls Ndeo

{

frie n dcasls List

Tv lae;

Node* ent;x

odN(ien v,Ntod)

n{

v

laue=,nexv=n;t

}}

;/

//////////////////////////////

//

/*

表链*/

t

melpate

s

calss Lsti

{

ublpc:

iLits()

;L~ist);(

oivd showLsi(t);

void x

nuhan()u;

vo

i sdahnhcuN(doe p*;)

viodjs (itn ,nnt s,iin tm)

;

ool ibsmEtpy)(

{

rtuenrh ead==NLUL

;}

;void appne(cdons Ttva ue)l ;

rpvaiet

:

oNd* ead;

h;}

etmpaletc

T

ovdiL itshoLiswt()

Node{T>

;while(!=NUpL)L

{

cotu

aluv

'=pp->net;

x}

}

tem

plte

Li>tist()L

{

he

ad=UNL;

L

}

te

plmta

>istLT~Lis(t

{}

)

t

mepalet

>oivdL ist::appTndeT( )

v

{oNdeT>(T,vUNL);

L

odN ep=*had;e

i

fh(ade==NLUL

)

{

h

ead=;e

}

else

{wh

leip(>next!=N-LLU

)p=

p>-exnt

;

->neptxe=;

}

}

tmeplte

vidoLi t::uxhnaun)(

{

oNe

*=hepda;

w

ihle(-p>next=NULL!

){

=pp>nex-t

;

}

p>n-xeth=ead ;

}

tmelapetcls

v

id Liossh:nacu(Nohde p)

{*

oNe *T=ph

;

whlieh->(exnt!=)p

h=h-

n>ext

;

-h>nxte=p>-nex;

t

edlet p;

e}

templae

>ovdi iLt::j(ins tnint ,,isntm)

{

odeNp=*eha;d

odN *tmpe;

i

n ti;

//找

到第个s点结

ofri=(;i
)

=pp->netx;

ouc
wh

iel(n!1=

{)

/ 报/过数程

fo(r=i0i

)p=->pexn;t

/删除/数中的报第报号的结m

点oct-vluea

emp=t;p

p=->pnex;

stanhcu(thep)m;

/将/循链表的长度环1减

n

-;

-}

//输最后出个被删除一结点的数

cout值

;}

///

/////////////////////////////////////

//

clas

Tset

x{

ublpc:i

vidotext )(

{

/*

n为单

表链的长度

;为从开头sS第个结点处始报开

m为报数长度,报数的结m点将删被

*

/istit;

si

tni;

in n,t,sm;

ouc

cin>n>>s>>m>

;

/建/立个由一1,,2.3..组.的成单表链

or(f=0ii;n
)

istl.apepd(in+);

1

/显示/创所建的单表l链si

tlis.tshwoList);(

outc
;

/

将链表/lsi的首t相连尾,组单项成循链表环

lstix.uhnan();u

//瑟约夫题问理处链表

lis

.ts(jn,,m)s;

}}

;

///

/////////////////////////////////////////////////////////

//主/函

数int

mina)

({

Text t

;t

te.tx);

w(hlei()1}

retu{nr0 ;

}


相关内容

  • 约瑟夫问题
  • [编辑本段]约瑟夫问题的来历 这是17世纪的法国数学家加斯帕在<数目的游戏问题>中讲的一个故事:15个教徒和15 个非教徒在深海上遇险,必须将一半的人投入海中,其余的人才能幸免于难,于是想了一个办法:30个人围成一圆圈,从第一个人开始依次报数,每数到第九个人就将他扔入大海,如此循环进行直 ...

  • 数据结构_约瑟夫环
  • 题目:编制一个约瑟夫环的程序 一. 需求分析 1. 本程序中,以循环链表储存个人号码和密码.人数上限为105, . 2. 程序以用户和计算机的对话方式执行,即在计算机终端上显示"提示信息"之后,由用户在键盘上输入相应数据,结果在之后显示. 3. 程序执行的命令包括: 1)构造循环 ...

  • 约瑟夫环数据结构实验报告
  • 数据结构实验报告 实习1 线性表及其应用 题目:编制一个演示约瑟夫环的程序 班级:1403011班 姓名:付尧 学号:[1**********] 完成日期:2015.10.25 一.需求分析 1.本程序中,人数n为任意整数,首先输入一个报数上限值整数m,程序应能自动将出列的人所持的密码赋给m,再次作 ...

  • 数据结构课程设计题目
  • 数据结构课程设计题目 以下8个题目任选其一. 1.排序算法比较 利用随机函数产生30000个随机整数,利用插入排序.起泡排序.选择排序.快速排序.堆排序.归并排序等排序方法进行排序,并且 (1)统计每一种排序上机所花费的时间. (2)统计在完全正序,完全逆序情况下记录的比较次数和移动次数. (3)比 ...

  • 线性链表的实现及操作-
  • 数据结构[第七次]实验报告 学院: 班级: 学号: 姓名: 实验七 (一)实验名称:线性链表的实现及操作 (二)实验目的: 1) 深入理解线性链表的逻辑结构和链式存储结构: 2) 掌握线性链表的基本操作及应用: 3) 培养学生灵活使用结构解决实际问题的能力. (三)实验要求: 1) 设计一个100位 ...

  • 〈数据结构〉上机实验指导
  • 数据结构实验指导书 陈宏明 张亚红 寇海洲编 淮阴工学院计算机系 二OO 五年九月 目 录 实验一 线性表及其应用----- --------2 实验二 实验三 实验四 实验五 实验六 栈和队列及其应用-------------5 二叉树及其应用--------------7 图及其应用------ ...

  • 约瑟夫环问题 数据结构C语言描述
  • 约瑟夫环问题 约瑟夫问题的一种描述为:编号1,2,-,n的n 个人按顺时针方向围坐一圈,每个人持有一个密码(正整数).一开始任选一个报数上限值m, 从第一个人开始顺时针自1开始顺序报数,报到m 时停止报数.报m 的人出列,将他的密码作为新的m 值,从他在顺时针方向上的下一个人开始重新从1报数,如此下 ...

  • 书评|星巴克的人文关怀:顾客不再是一杯"拿铁"
  • ?黑马说 对一家企业而言,服务好顾客这位"上帝"有多重要?<星巴克领先之道>一书从顾客.产品.员工三者的关系和管理角度做了系统的方法论梳理,深度剖析了一个普通的小咖啡馆是如何一跃成为引领咖啡文化的国际大品牌的,读书之前我们来看精华提炼版的书评. 文/涂启智 编辑/卡西 ...

  • 全面质量管理培训
  • 全面质量管理培训 [课程名称] 全面质量管理TQM [课程编号] F11 第一讲 质量管理发展历史概述 1. 引言 2.全面质量管理发展历史概述 3.世界范围内TQM的实施状况和代表人物 4.TQM八大原则 第二讲 全面质量管理原理 1.引言 2.TQM的特点和关键 3.TQM的思想基础和方法依据 ...