院子种无花果树好吗:数据结构 单链表 问题 必须用C语言!!

来源:百度文库 编辑:高校问答 时间:2024/05/03 03:40:28
M只猴子选大王,方法:所有猴子按1……M编号围成一圈,从第一个开始按顺序1,2……N报数,报到N的退出,如此循环,直到最后一只,那只就是猴王。

要求:单向循环链表存槠结构模拟次过程,输出大王的编号。必须用C语言!!

~~~请不要和我说到书上找,这样好没意义!!也不要和我说纯C和C++的,因为这些我都会。~~~

我只要用C语言数据结构中单循环链表思想来求的!!
非常感谢~~~!!!~
QQ 531584822

程序如下:
M和N的值在程序开始的define处修改。

#include<stdio.h>
#define M 3
#define N 2

typedef struct node{
int num;
struct node *link;
} node;

main(){
int a=1;
node *head,*p,*q;
head=(node *)malloc(sizeof(struct node));
head->num=a;
p=head;
while(a!=M) //构建单链表
{
a+=1;
q=(node *)malloc(sizeof(struct node));
q->num=a;
p->link=q;
p=p->link;
}
p->link=head; //构建循环链表
p=head;
while(1) //开始报数
{
a=1;
while(a<N-1)
{
p=p->link;
a+=1;
}
if(p->link==p)
{
printf("猴王编号为: %d\n",p->num);
break;
}
else p->link=p->link->link; //删除报到N的猴子
p=p->link;
}
}

明天给你了,你怎么联系了