回 帖 发 新 帖 刷新版面

主题:[原创]数据结构

猴子选大王算法
任务:一堆猴子的编号为1-m,按此顺序围坐,从第1个开始数,要数到第N个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,该猴子就为大王.
要求:输入m,n,其中m,n为整数, n<m
输出形式:中文提示按m个猴子,数n个数的方法,输出为大王的猴子是几号
注:用数据结构实现,下面有提示!
请各位高手帮帮忙啊,十万火急
#include<stdio.h>
#include<stdio.h>
typedef struct node /*建立结构体*/
{ int num;
   struct node *next;
   }link;
 int *create(int m)
{int i;
  link *head,*s,*r;
  head=NULL,r=NULL;
  for(i=0;i<m;i++)
 { s=(link *)malloc(sizeof(link));
   s->num=i+1;
   if(head==NULL) head=s;/*结点的数据域为猴子的序号*/
   else r->next=s;
   r=s;
  }
 r->next=head;
 return head;
}
delete()
{link *head,*p,*s;
 int i,j,m,n;
 char ch;
 printf("请输入猴子的个数'm':");/*提示输入m n,并注意到m>n>0的容错性*/
 scanf("%d",&m);/**/

?????????这里就是欠缺的语句???????


 printf("\n猴子大王的序号是:\t%d\n",p->num);/*输入猴子的个数m*/
 printf("继续,输入'y',或按任意键退出:");
 getchar();
 ch=getchar();
 if((ch=='y')||(ch=='y')) delete();
 }
 main()
 {delete();}[color=FF0000]这里就是欠缺的语句[/color]

回复列表 (共3个回复)

沙发

这是一个约瑟夫环类似的问题
请从网上自行查询约瑟夫环的程序动手修改而成
否则代码收费

板凳

哪位高手可以透露啊?谢谢!

3 楼


#include<iostream.h>
#include<stdlib.h>
class student
{
public :
    int xuanhao;
    student *next;
};
int main()
{
    int m=0,n=0;
    student *head;
    student *p=new student;
    p->xuanhao=0;
    head=p;
    //cout<<head->xuanhao;
    cin>>m;
    int i=0;
    for(i=1;i<m;i++)
    {
        p->next=new student;
        p=p->next;
        p->xuanhao=i;
        
    }
    p->next=head;
    //p=head;
    //cout<<p<<endl;
    /*for(int j=0;j<20;j++)
    {
        cout<<p->xuanhao<<endl;
        p=p->next;
    }*/
    student *q=NULL;
    p=head;
    int counter=0;
    cin>>n;
    for(;;)
    {
        for(int j=0;j<n;j++)
        {
            p=p->next;
            if(j==n-1)
            {
                q=p->next;
                p->next=p->next->next;
                counter++;
                delete q;
            }
        }
        if(counter==m-1)
        {   cout<<p->xuanhao<<endl;
        break;}
    }
//    for(int j=0;j<20;j++)
    //{
    //    cout<<p->xuanhao<<endl;
      //  p=p->next;
    //}
    system("pause");
    return 0;
}
记的评分哦!!!

我来回复

您尚未登录,请登录后再回复。点此登录或注册