约瑟夫环形问题
有30人将其编号,从头开始1,2,3数数,每到3将其删除,一共删去15个数。输出被删去的15个数
#include<iostream> using namespace std; struct LinkList { int val; LinkList* next; LinkList(int a):val(a),next(NULL){} }; LinkList *CreatList(int n) { LinkList *p = new LinkList(1); LinkList *h = p; for(int i=2;i<=n;i++) { LinkList *p1 = new LinkList(i); p->next = p1; p = p->next; } p->next = h; return h; } void del()//一共有30个人,要删除15个人,删除的数输出 { LinkList *h = CreatList(30); //创建30个结点的链表 int num = 15; LinkList *p = h,*p1 = h; while(num) { num--; p = p->next; cout<<p->next->val<<" "; p1 = p->next->next; delete p->next; p->next = p1; p = p1; } cout<<endl; } void main() { del(); }
原文地址:http://www.cnblogs.com/Xylophone/p/3812627.html