约瑟夫单循环链表的c++实现
哪位可以帮下
程序代码:
#include <iostream> using namespace std; template <class T> class Node { public: T element; Node<T> *link; Node(T elem=0,Node<T>* lk=0):element(elem),link(lk) {} template <class T> friend void Josephus(Node<T>*& first, int m); }; template <class T> void Josephus(Node<T>*& first, int m) { Node<T> *q=first,*p=first; while(p&&p!=p->link) { for(int i=1;i<m;q=p,p=p->link) i++; cout<<p->element<<" "; q->link=p->link; delete p;p=q->link; } if(p) { cout<<p->element<<" "; delete p; } first=NULL; } int main() { int s,n; cout<<"请输入人数:"; cin>>n; cout<<"请输入间隔:"; cin>>s; Node<int> *u=new Node<int>(1,0); u->link=u; //构成循环链表 Node<int> *q=u; for(int i=2;i<=n;i++) { q->link=new Node<int>(i,q->link); q=q->link; } Josephus(u,s); cout<<endl; }