#include <stdioh>
int king(int m,int n)
{
int k=0;
int i;
for(i=2;i<=m;i++)
k=(k+n)%i;
return ++k;
}
void main()
{
int m,n;
printf("请输入猴子的个数和间隔数:");
scanf("%d%d",&m,&n);
printf("第%d个猴子为大王\n",king(m,n));
}
/josephus_clistc/
/Josephus问题:循环链接表实现/
#include <stdioh>
#include <stdlibh>
#define FALSE 0
#define TRUE 1
typedef int DataType; / 定义元素类型为整型,也可定义为其他类型 /
struct Node; / 单链表结点类型 /
typedef struct Node PNode; / 结点指针类型 /
struct Node / 单链表结点结构 /
{ DataType info;
PNode link;
};
typedef struct Node LinkList;
typedef LinkList PLinkList;
int init_clist( PLinkList pclist, int n )
/ 用1,2,……,n为pclist所示的循环表初始化 /
{ PNode p,q;
int i;
q = (PNode)malloc( sizeof( struct Node ) );
if ( q == NULL ) return ( FALSE );
pclist=q;
q->info = 1;
q->link = q;
if (n==1) return (TRUE);
for(i=2;i<n+1;i++)
{ p=(PNode)malloc(sizeof(struct Node));
if (p==NULL) return(FALSE);
p->info=i;
p->link=q->link;
q->link=p;
q=p;
}
return (TRUE);
}
void josephus_clist( PLinkList pclist, int s,int m )
{PNode p,pre;
int i;
p=pclist;
/ 找第s个元素 /
if (s==1)
{pre =p;
p=p->link;
while (p!=pclist)
{
pre =p;
p=p->link;
}
}
else for(i=1;i<s;i++)
{
pre =p;
p=p->link;
}
while (p!=p->link) / 当链表中结点个数大于1时 /
{ for (i=1;i<m;i++) / 找第m个结点 /
{ pre = p;
p = p->link;
}
printf(“ out element: %d \n”,p->info); / 输出该结点 /
if (pclist ==p) / 该结点是第一个结点时,删除时需特殊处理一下 /
pclist =p->link;
pre->link = p->link; / 删除该结点 /
free(p);
p = pre->link;
}
printf(“ out element: %d \n”,p->info); / 输出最后一个结点 /
pclist=NULL;
free(p);
}
main( )
{LinkList jos_clist;
int n,s,m;
/ 输入所需各参数的值 /
do{
printf(“\n please input the values of n = “);
scanf(“%d”,&n);
}while (n<1);
do{
printf(“ please input the values of s = “);
scanf(“%d”,&s);
}while (s<1);
do{
printf(“ please input the values of m = “);
scanf(“%d”,&m);
}while (m<1);
if (init_clist(&jos_clist,n))
josephus_clist(&jos_clist,s,m);
else
printf(“Out of space!\n”);
}
来源:>
void InitList(LinkList &head)改成void InitList(LinkList head),同时该函数中head全部改成head
void CreateListA同样处理。
以上就是关于猴子选王(约瑟夫环)用C语言递归方法全部的内容,包括:猴子选王(约瑟夫环)用C语言递归方法、哪位高手能帮我做个约瑟夫环的C语言程序,万分感谢啊~!!!!!、一个简短的约瑟夫环C程序,在VC6.0中编译通过,在gcc下提示&符号非法,怎么改使它能运行呢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)