约瑟夫环C语言程序 day1

约瑟夫环问题,n个人围着一张桌子,从1开始报数,规定报道第k数的人自杀,接着下一给重新开始报数。这里n=41,k=3。

#include<stdio.h>
#include<stdlib.h>

typedef int EleType;

typedef struct LinkNode
{
	EleType data;
	struct LinkNode *next;
}LinkNode,*LinkList;

LinkNode *Creat(LinkList *L,int n)
{
	LinkList r,p;
	(*L)=(LinkNode*)malloc(sizeof(LinkNode));
	r=*L;
	int i;
	for(i=1;i<n+1;i++)
	{
		p = (LinkNode*)malloc(sizeof(LinkNode));
		p->data=i;
		r->next=p;
		r=p;
	}
	r->next=(*L)->next;
	free(*L);
	return r->next;
}

int main()
{
	int n=41;
	int k=3;
	int m;

	LinkList L,temp,p;
	p=Creat(&L,n);
	while(p!=p->next)
	{
		for(m=1;m<k-1;m++)
		{
			p=p->next;  
		}
		printf("%d->",p->next->data);
		temp=p->next;  
		p->next=temp->next;
		free(temp);
		p=p->next;
	  
	}
	printf("%d",p->next->data);
	system("pause");
}

猜你喜欢

转载自blog.csdn.net/suntingsheng123/article/details/84339791