猴子选王(约瑟夫环)用C语言递归方法

猴子选王(约瑟夫环)用C语言递归方法,第1张

#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下提示&符号非法,怎么改使它能运行呢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10129965.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存