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

📄 cpp1.3.cpp

📁 Josephu算法 建立一个01.in的文件
💻 CPP
字号:
#include "stdlib.h"
#include "stdio.h"
#define N 5
typedef struct node
{	int num;
	struct node *next;
}linknode,*link;
/*Creat a cercle list*/
link Creatlist(int m)
{
	int i;
	link head=NULL,p=NULL,q=NULL;
	head=(link)malloc(sizeof(linknode));
	p=head;
	for(i=1;i<=m;i++)
	{
		q=(link)malloc(sizeof(linknode));
		q->num=i;
		if(i==1) {head->next=q;p=q;continue;}
		p->next=q;
		p=q;
		p->next=NULL;
	}
	p->next=head;
	return head;
};
/*delete a number*/
link Delete(link head,FILE *fq,link p,int n)
{	
	int i;
	link q=NULL;
	for(i=1;i<n;i++)
	{	if(p->next==head)
		{q=head->next;p=q;}
		else
		p=p->next;
	}
	q=p->next;
	if(q==head)
	q=q->next;
	p->next=q->next;
	fprintf(fq,"%d ",q->num);
	return p;   
};

 void main()
{
	FILE *fp,*fq;
	int m,n,i,j;
	link head,q,p=NULL;
	
	if((fp=fopen("01.in","r"))==NULL) {printf("can not open file: o1.in!\n"); exit(1);}
	if((fq=fopen("01.out","w"))==NULL) {printf("can not open file: o1.out!\n"); exit(1);}
	for(i=0;i<N;i++)
	{
		fscanf(fp,"%d%d",&m,&n);
		head=Creatlist(m);
		p=head;
		for(j=0;j<m;j++)
		{
			p=Delete(head,fq,p,n);
			
		}
		fprintf(fq,"\n");
	}
	fclose(fp);
	fclose(fq);

}

⌨️ 快捷键说明

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