约瑟夫c++ ZZ

it2022-05-09  34

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);} 约瑟夫算法(带头结点的循环链表实现)

转载于:https://www.cnblogs.com/powerlc/archive/2005/08/26/223755.html


最新回复(0)