本文主要是介绍选首领------循环链表实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
此题是在软考的书上看到的,想起以前推到过一个公式,那个超级简单,但是这个是循环链表实现的。有助于学习数据结构。
问题是:
选首领。N个游戏者围成一圈,从第一个人开始顺序报数1,2,3.凡是报道3者推出圈子,最后留在圈子的人为首领。
求首领是?
解题分析:很明显的是约瑟夫问题,可以先先创建一个循环链表,然后设置两个变量计数器一个 c 计算数到第几个,还有一个 k 记录还剩多少个,每次当 c 的值等于二的时候输出后面的数,当 k 的值等于1的时候返回,说明还剩最后一个很明显是答案。
代码:
#include <iostream>
#include <cstdio>
#include <stdlib.h>
using namespace std;
typedef struct node{
int code;
这篇关于选首领------循环链表实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!