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

📄 ysfh.cpp

📁 这是数据结构中约瑟夫环问题!
💻 CPP
字号:
#include <stdio.h>
#include <stdlib.h>
#define NULL 0
struct nodetype
{
	int number;
	int cipher;
	struct nodetype *next;
};
typedef struct nodetype zjs;
zjs *create(int n)
{
	int i;
	zjs *p,*q,*la;
	la=(zjs *) malloc (sizeof (zjs));
	q=la;
	for(i=1;i<=n;i++)
	{
		p=(zjs *)malloc(sizeof(zjs));
		p->number=i;
		printf("请输入每个人的密码:");
		scanf("%d",&p->cipher);
		printf("%d %d\n",p->number,p->cipher);
		q->next=p;
		q=p;
	}
	q->next=la->next;
	return la;
}
void locfor(zjs *la,int m)
{
	int i;
	zjs *p,*pre,*s;
	p=la->next;
	printf("出列的顺序为:");
	while(la->next!=NULL)
	{
		for(i=1;i<m;i++)
		{
			pre=p;
			p=p->next;
		}
		printf("%d ",p->number);
		m=p->cipher;
		if(pre!=p)
		{
			pre->next=p->next;
			s=p;
			p=p->next;
			free(s);
		}
		else
		{ 
			free(pre);
			la->next=NULL;
		}
	}
	free(la);
    printf("\n");
}
void main()
{
	int m,n;
	zjs *la;
	printf("请输入你的初始值m:");
	scanf("%d",&m);
	printf("m=%d\n",m);
	printf("请输入人的个数n:");
	scanf("%d",&n);
	printf("n=%d\n",n);
	la=create(n);
	locfor(la,m);
}

⌨️ 快捷键说明

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