惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
V
Visual Studio Blog
IT之家
IT之家
博客园 - 聂微东
The Cloudflare Blog
月光博客
月光博客
阮一峰的网络日志
阮一峰的网络日志
S
SegmentFault 最新的问题
Apple Machine Learning Research
Apple Machine Learning Research
酷 壳 – CoolShell
酷 壳 – CoolShell
爱范儿
爱范儿
H
Help Net Security
博客园 - 叶小钗
V
V2EX
WordPress大学
WordPress大学
J
Java Code Geeks
Hugging Face - Blog
Hugging Face - Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园_首页
C
Check Point Blog
B
Blog
D
DataBreaches.Net
美团技术团队
罗磊的独立博客

博客园 - powerlc

mobile WareHouse 项目笔记1 moss 与SAP iView web part 整合 一个合格的程序员该做的事情 IT职场健康杀手与应对宝典 (虽然是IT职场,可是对于常上网的ggmm也是很有用的) 常用CASE工具介绍 ZZ 北京知名百货公司宰客内幕 开发工程师人生之路 (推荐) Asp.net中在datagrid中放checkbox控件的全选 - powerlc - 博客园 C#修饰符 c++程序员的常用工具集 10条有益的涉世建议ZZ 算术运算的溢出问题 计算机中的原码、反码和补码 用一条SQL完成数据表的行统计 C#的代理和事件 Repeater导出为excel格式 常见算法基础之排序 算法 ZZ JavaScript实用的一些技巧 - powerlc - 博客园
约瑟夫c++ ZZ
powerlc · 2005-08-26 · via 博客园 - powerlc

template<class T>  cList;
template
<class T>
class Node
{
    friend cList
<T>;
    
public:
     Node( )
{};
     Node(
int i):data(i){}
    
private:
     
int data;
     Node 
*next, *h;
}
;
template
<class T> 
class cList
{
    
public:
     cList()
{first=new Node; last= first ;} //建立头结点
     void Insert(int i);  //在尾部插入新结点
     void Next( );
     
void DelNode( );
     
void Jeson (int n, int s, int m);
private:
Node 
*first, *last, *p, *q, *r;
}
;
template
<class T> void cList<T>:: Insert(int i)

Node 
*m=new Node(i);
  last
->next=m;
  last
= last->next;
  last
->next=first;
 }
    
template
<class T> void cList<T>:: void Next( )
{
if(p!=first&&q!=first)
{
p
=q;
q
=q->next;
}

else if(q= =first)
{
p
=q;
q
=first->next;
}

else
{
p
=q;
q
=q->next;
}

 }

template
<class T> void cList<T>:: void DelNode( )
{
    
if(p!=null&&q!=null//删除结点
{p->next=q->next;}
          
else if(q= =null)
                
{p->next=first->next;}
                
else
              
{first->next=p->next;}
          delete q;
}

template
<class T> void cList<T>:: Jesonph (int n, int m, int s)
{  p=first;
    q
=p->next;
    
for(int i=1;i<s; i++)  //寻找起始点s
  { Next( );}
     
for(int i=1;i<n;i++/执行n-1次,删除n-1个结点,找出最终结点
   
{
      
for(int j=1;j<k;j++//逐个删除满足条件的结点
        {Next( );}
        cout
<<q->data<<endl;
        
//m=q->key;若每个人手中有密码(即新的m值)则使用该语句,同时需要改变Node的
        DelNode( );                                 //私有成员,和Insert函数
        }

      cout
<<”优胜结点:”<<first->data<<endl;
    }


main( )
{
    
int n, m, s;
  cin
>>n>>m>>s;
  cList  jesonphlist;
  
for(i=1;i<=n;i++)
  
{ jesonphlist .Insert(i);}
  jesonphlist. Jesonph (n, m, s);
}

约瑟夫算法(带头结点的循环链表实现)