/*设有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
whiel(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
whiel(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 ;
}