首页 > 代码库 > 华为历年试题(10约瑟夫环)
华为历年试题(10约瑟夫环)
约瑟夫环形问题
有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(); }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。