当前访客身份:游客 [ 登录 | 加入 OSCHINA ]

代码分享

当前位置:
代码分享 » C/C++  » 编程基础
分享到: 
收藏 +0
0
<无详细内容>
标签: <无>

代码片段(1) [全屏查看所有代码]

1. [代码][C/C++]代码     跳至 [1] [全屏预览]

#include<stdio.h>         //一圈共有N个人,开始报数,报到M的人自杀,然后重新开始报数
#include<stdlib.h>
typedef struct list
{
	int data;
	struct list *next;
}node;
node *create(int N)
{
	int i;
	node *head,*p1,*p2;
	int a;
	head=NULL;
	printf("输入节点值:  ");
	for(i=N;i>0;i--)
	{
		p1=(node *)malloc(sizeof(node));
		scanf("%d",&a);
		p1->data=a;
		if(head==NULL)
		{
			head=p1;
			p2=p1;
		}
		else{
			p2->next=p1;
			p2=p1;
		}
	}
	p2->next=head;
	return head;
}
node *del(node *head,int M)
{
	node *r,*t,*p;
	p=head;
	int i=2;
	while(i<M)
	{
		p=p->next;
		i++;
	}
	r=p;
	t=p->next;
	r->next=t->next;
	free(t);
	return r->next;
}
int main()
{
	node *p,*q,*r,*t;
	int j,M,N;
	printf ("输入M,N: ");
	scanf("%d %d",&M,&N);
	j=N;
	r=p=create(N);
	while(j!=1)
	{
		q=del(p,M);
		p=NULL;
		p=q;
		j--; 	
	}
	printf("最后一个死的是:%d\n",q->data);
	return 0;
}


开源中国-程序员在线工具:Git代码托管 API文档大全(120+) JS在线编辑演示 二维码 更多»

发表评论 回到顶部 网友评论(3)

  • 1楼:尘埃12 发表于 2016-08-11 08:31 回复此评论
    约瑟夫环问题
  • 2楼:李健95 发表于 2016-08-15 20:50 回复此评论

    引用来自“尘埃12”的评论

    约瑟夫环问题
    手误,多谢指正!
  • 3楼:Moses的理想国 发表于 2017-01-20 15:48 回复此评论
    function Josephus($n,$m) { 
        $r=0; 
        for($i=2; $i<=$n; $i++) {
                $r=($r+$m)%$i; 
        }
        return $r+1; 

开源从代码分享开始 分享代码
李健95的其它代码 全部(3)...