1. 程式人生 > >約瑟夫環C語言程式 day1

約瑟夫環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");
}