必威体育Betway必威体育官网
当前位置:首页 > IT技术

约瑟夫问题(链表解法)

时间:2019-09-09 15:12:13来源:IT技术作者:seo实验室小编阅读:50次「手机版」
 

约瑟夫问题

问题描述

编号为 1-N 的 N 个人围坐在一起形成一个圆圈,从第 P 个人开始,依次按照顺时针的方向报数,数到第 M 个人出列,直到最后剩下一个人。

请写一个程序,对于给定的N,P,M,计算并打印出依次出列的人的编号

#include <iOStream> 
using namespace std;

struct Node {
	int num;
	Node *ahead;
	Node *next;
};

Node *Create(int N) {   //创建包含N个节点的双向循环链表
	int n = 1;
	Node *node = new Node;
	node->num = n;
	Node *head = node;      //指向第一个节点
	Node *tail = head;      //指向最后一个节点

	while (n++ < N) {
		node = new Node;   //建新节点
		node->num = n;     //赋值
		tail->next = node; //接入新节点
		node->ahead = tail; 
		tail = tail->next; //尾巴后移
	}
	
	tail->next = head;    //尾巴处理
	head->ahead = tail;
	return head;
	
}

Node *Search(Node *head, int P) {   //从Head开始寻找第P个节点
	while (head->num != P) {
		head = head->next;
	}
	return head;
}

Node *Release(Node *head, int M) {   //释放Head开始的第N个节点
	int count = 1;
	Node *temp = head;
	while (count < M) { //寻找第M个节点
		temp = temp->next;
		count++;
	}
	temp->ahead->next = temp->next;     //移除第M个节点
	temp->next->ahead = temp->ahead;    //移除第M个节点
	cout << temp->num << ",";
	head = temp->next;     //释放第M个节点所占内存空间
	delete temp;
	return head;
}

int main() {
	//约瑟夫问题
	int N, P, M = 0;				//N-起始节点数,P-开始节点
	cin >> N >> P >> M;				//每次释放第N个节点
	Node *head = Create(N);			//创建M个节点的环
	head = Search(head, P);			//找到第P个节点
	while(head->next != head) {	    //不断释放第M个元素,直到只剩一个元素
		head = Release(head, M);    //释放第M个节点
	}
	cout << head->num;
	return 0;
}

在这里插入图片描述

相关阅读

95后网红徐可:从问题少女到创立ERA 获数百万融资 估值1

摘要:徐可曾是火爆一时的网红。&ldquo;17岁的海归翻车女&rdquo;&ldquo;性感模特&rdquo;等一系列颇具争议的标签紧贴在她背后。即便

【QT】关于Qt::WA_DeleteOnClose的使用问题

今天在解决软件bug的过程中,注意到QT关于[slot] bool QWidget::close()有这样一段说明: If the widget has the Qt::WA_DeleteOnClo

背包问题 (动态规划算法)

声明:原文出处:https://blog.csdn.net/xp731574722/article/details/70766804 0-1 背包问题:给定 n 种物品和一个容量为 C 的背包,

淘宝收藏加购刷多了会有问题吗?怎么刷?

淘宝刷收藏加购可以提升宝贝的人气值,提升宝贝综合排名和人气排名,每一个爆款都需要收藏的支持,不过淘宝单纯的刷收藏加购和刷单有点

iOS 11.3.1越狱工具发布:重新安装问题已解决

A5创业网(公众号:iadmin5)7月5日报道,iOS 11.3.1能否越狱?此前外媒曾曝出,由于重新安装问题,Electra iOS 11.3.1越狱工具的发布时间被推

分享到:

栏目导航

推荐阅读

热门阅读