标题:DONE约瑟夫问题
只看楼主
zzxwill
Rank: 1
等 级:新手上路
帖 子:398
专家分:0
注 册:2007-8-15
 问题点数:0 回复次数:3 
DONE约瑟夫问题

约瑟夫问题


//约瑟夫问题,结果为什么异常?
//输入4 2 2
//4 2 2
// 1The last dot 2 4The last dot 2 2The last dot 3Press any key to con
//tinue
#include<stdio.h>
#include<malloc.h>
typedef struct node{
int data;
struct node *link;
}LNode,*LinkList;//连接点类型

main()
{
int n,m,k;
LinkList p,r,list=NULL;
int i;
scanf("%d %d %d",&n,&m,&k);
for(i=1;i<=n;i++){
p=(LinkList)malloc(sizeof(LNode));
p->data=i;
if(list==NULL){
list=p;
}
else{
r->link=p;//r是p的直接前驱。
}
r=p;
}


p->link=list;//list是第一个结点的指针,建立循环链表!

p=list;//p指向第一个结点!
for(i=1;i<k;i++){
r=p;
p=p->link;
}//p指向第k个结点,从第k个开始报数

while(p->link!=p){
for(i=1;i<m;i++){
r=p;
p=p->link;
}//此时p是要删除的节点指针,因为这个报到了m
r->link=p->link;//删除地址为p的节点
printf("%d",p->data);//输出这个节点的内容

free(p);
p=r->link;//重新将r的直接后驱建为p
}
printf("The last dot is %d",p->data);

}


[此贴子已经被作者于2007-10-1 11:25:10编辑过]

搜索更多相关主题的帖子: 约瑟夫问题 DONE dot int node 
2007-09-29 19:37
aipb2OO7
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2007-8-30
得分:0 

没什么错吧!


[glow=255,yellow,5]菜鸟一个.以后靠你们了..[/glow]
2007-09-29 19:59
zzxwill
Rank: 1
等 级:新手上路
帖 子:398
专家分:0
注 册:2007-8-15
得分:0 

我在VC++里运行了,结果如上。为什么?我也觉得没错


一分耕耘,一分收获。
2007-09-29 21:21
zzxwill
Rank: 1
等 级:新手上路
帖 子:398
专家分:0
注 册:2007-8-15
得分:0 

我本有问题~~谢谢


一分耕耘,一分收获。
2007-10-01 11:24



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-174110-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.136402 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved