⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 约瑟夫环--循环单链表.txt

📁 实现的是对约瑟夫问题的c语言编程
💻 TXT
字号:
#include<iostream>
#include<iomanip>
#include<stdlib.h>
using namespace std;
int main()
{
	struct node{
		int i;
		int passwd;
		node *next;
	}*listlink,*curp,*lostp,*head;
	curp=(node *)malloc(sizeof(node));
	int n,m;
	while(1){
		cout<<"请输入人数n(0<n<=30):";
		cin>>n;
		if(n>0&&n<=30)
			break;
		system("cls");
	}
	if(n==1){
		cout<<"出列编号是1"<<endl;
		exit(1);
	}
	cout<<"请输入各人的密钥passwd(passwd>0):";
	for(int i=1;i<=n;i++){
		listlink=(node *)malloc(sizeof(node));
		while(1){
			cin>>listlink->passwd;
			if(listlink->passwd<0)
				cout<<"error passwd,please retype again:";
			else break;
		}
		listlink->i=i;
		if(i==1){
			listlink->next=listlink;
			head=listlink;
            curp=listlink;
		}
		else{
			listlink->next=head;
            curp->next=listlink;
            curp=listlink;
		}
	}
	cout<<"请输入m(m>=1):";
	while(1){
		cin>>m;
		if(m<1)
			cout<<"error m,please retype again:";
		else break;
	}
    lostp=curp->next;
begain:
	for(;m>=1;--m){
		if(m==1){
			curp->next=lostp->next;
			m=lostp->passwd;
			cout<<"当次出列序号是:"<<lostp->i<<endl;
			lostp=lostp->next;
			n--;
			if(n==1){
				cout<<"当次出列序号是:"<<lostp->i<<endl;
				exit(1);
			}
			goto begain;
		}
		else{
			curp=curp->next;
			lostp=lostp->next;
		}
	}
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -