约瑟夫环的问题,不知道哪里出的错,大家来帮忙看一下

nodreamer 2003-10-13 07:09:27
应该是挺简单的问题,算法也都会,就是不知道是哪里出了错,
呵呵,好久没碰C语言了,大家来帮我看一下
编译的时候没有问题,运行的时候直接进入死循环,程序如下:
//用链表实现Joseph环

typedef struct LNode{//定义节点
int n,m;
struct LNode *next;
}LNode,*Linklist;

void Joseph(int code, LNode *l){
//Joseph环的功能实现
LNode *p1=l;
while(p1!=0){
while(--code)p1=p1->next;
printf("d%,",p1->n);
code=p1->m;
p1=p1->next;
free(p1);
}
}
main(){
int n,m,t;
LNode *p,*last,*l=0;
printf("The total number of the people is");
//接受用户输入的数据并存入链表
scanf("d%",&n);
p=(Linklist)malloc(sizeof(LNode));
last=p;
t=n;
while(t>0){
printf("Please input the secert code of the d% people.",t);
scanf("d%",&m);
p->next=l;
p->n=t;
p->m=m;
l=p;
p=(Linklist)malloc(sizeof(LNode));
t--;
}
free(p);
last->next=l;
printf("Please input the first code.");
scanf("d%",&m);
Joseph(m,l);
}
...全文
48 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
hhlong 2003-10-16
  • 打赏
  • 举报
回复


http://expert.csdn.net/Expert/topic/2359/2359540.xml?temp=.4529535
langzi8818 2003-10-16
  • 打赏
  • 举报
回复
up
  • 打赏
  • 举报
回复
终于弄清了, 太笨了我:。)
#include <stdio.h>
#include <stdlib.h>
struct LNode{
int code;
LNode* next;
int num;
};
LNode* initial(int numofpep){
LNode* head,*node,*temp=0;
int code,num=1;
while(numofpep--){
node=(LNode*)malloc(sizeof(LNode));
printf("enter the code of people\n");
scanf("%d",&code);
node->code =code;
node->num =num++;
if(1==node->num)
head=node;
else
temp->next =node;
temp=node;

}
temp->next=head;
return head;
}
LNode* deletenode(LNode* n1){
LNode* temp;
temp=n1->next;
n1->next=temp->next;
printf("delete %d\n",temp->num );
free(temp);
return n1->next ;
}
void main(){
int numofpep,code;
LNode* node;
printf("enter the numbers of people\n");
scanf("%d",&numofpep);
node=initial(numofpep);
printf("enter the number of the first code\n");
scanf("%d",&code);
while(node->next!=node){
while(--code)
node=node->next;
node=deletenode(node);
code=node->code;
}
printf("delete %d\n",node->num);
free(node);
}
狐狸 2003-10-15
  • 打赏
  • 举报
回复
最上面的程序为什么运行出来是死循环啊???
nodreamer 2003-10-14
  • 打赏
  • 举报
回复
我参考micropentium6(小笨) 的代码进行了修改,运行是没有问题了,可是的不出正确的结果,不知道是什么问题
代码如下:
typedef struct LNode{
int n,m;
struct LNode *next;
}LNode,*Linklist;

void Joseph(int code,int n,LNode *l){
LNode *p1;
p1=l;
while(n){
while(--code)p1=p1->next;
printf("%d,",p1->n);
code=p1->m;
p1=p1->next;
free(p1);
n--;
}
}
main(){
int n,m,t;
LNode *p,*last,*temp;
printf("The total number of the people is ");
scanf("%d",&n);
p=(Linklist)malloc(sizeof(LNode));
last=p;
t=n;
while(t>0){
printf("Please input the secert code of the %d people ",t);
scanf("%d",&m);
p->next=temp;
p->n=t;
p->m=m;
temp=p;
p=(Linklist)malloc(sizeof(LNode));
t--;
}
free(p);
last->next=temp;
printf("Please input the first code ");
scanf("%d",&m);
Joseph(m,n,temp);
}
nodreamer 2003-10-14
  • 打赏
  • 举报
回复
忘了说了,一定要用c语言,一定要用链表的
playboyxp 2003-10-14
  • 打赏
  • 举报
回复
偶是用数组实现的
#include <iostream.h>
void main()
{
int a[17],i,j,k=1,integer;
for(i=0;i<17;i++)
a[i]=i+1;
cin>>integer;
i=-1;
while(1)
{
for(j=0;j<integer;)
{
i=(i+1)%17;
if(a[i]!=0) j++;
}
if(k==17) break;
cout<<a[i]<<" ";
a[i]=0;
k++;
}
cout<<a[i]<<endl;
}
ZhangYv 2003-10-14
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/2059/2059607.xml?temp=.3932154
mfcer2 2003-10-14
  • 打赏
  • 举报
回复
楼主可以上这儿来看一看!

我昨天帮人写了一个!

:-D
http://expert.csdn.net/Expert/topic/2351/2351407.xml?temp=.7756464
  • 打赏
  • 举报
回复
俺都不记得啥叫约瑟夫环了,反正改了改能运行了:)
#include <stdio.h>
#include <stdlib.h>
typedef struct LNode{//定义节点
int n,m;
struct LNode *next;
}LNode,*Linklist;
int n;
void Joseph(int code, LNode *l){
//Joseph环的功能实现
LNode *p1=l;
while(n!=0){
while(--code)p1=p1->next;
LNode* temp=p1->next;
printf("%d,",temp->n);
code=temp->m;

p1->next=p1->next->next;

free(temp);
n--;
p1=p1->next;
}


}
main(){
int m,t;
LNode *p,*last,*l=0;
printf("The total number of the people is");
//接受用户输入的数据并存入链表
scanf("%d",&n);
p=(Linklist)malloc(sizeof(LNode));
last=p;
t=n;
while(t){
printf("Please input the secert code of the %d people.",t);
scanf("%d",&m);
p->next=l;
p->n=t;
p->m=m;
l=p;
p=(Linklist)malloc(sizeof(LNode));
t--;
}
free(p);
last->next=l;
printf("Please input the first code.");
scanf("%d",&m);
Joseph(m,l);
}
fengwl 2003-10-13
  • 打赏
  • 举报
回复
scanf("d%",&n);


scanf("%d",&n);就ok了

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧