问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

数据结构C语言 约瑟夫环 急!!

发布网友 发布时间:2022-05-07 01:13

我来回答

3个回答

热心网友 时间:2023-05-18 05:28

给你一个参考一下: 

程序源代码:

#include<stdio.h>

typedef struct Node

{     

       int num;

       int pasword;

       struct Node *next;

}LinkList;

LinkList *creat(int n)

{

       LinkList *p,*q,*head;

       int i=1;

    head=p=(LinkList *)malloc(sizeof(LinkList));

    p->num=i;

       printf("请输入第1个人的密码:");

       scanf("%d",&p->pasword);

    for(i=2;i<=n;i++)

    {

        q=(LinkList *)malloc(sizeof(LinkList));

        if(q==0) return(0);

              printf("请输入第%d个人的密码:",i);

              scanf("%d",&q->pasword);

        q->num=i;

        p->next=q;

        p=q; 

    }

    p->next=head;          /*使链表尾指向链表头形成循环链表*/

   return head;

}

void fun(LinkList *L)

{

       int m,i;

       LinkList *p=L,*q,*s;

       printf("请输入m的初值:");

       scanf("%d",&m);

       printf("出列顺序为:");

       while(p->next!=p)

       {

              for(i=1;i<m;i++)

              {     q=p;

                     p=p->next;

              }

              printf("%5d",p->num);

              m=p->pasword;

              s=p;

              q->next=p->next;

              p=p->next;

              free(s);

       }

       printf("%5d",p->num);

       printf("\n");

}

main()

{     LinkList *L;

       int n;

       printf("请输入实验人数:");

       scanf("%d",&n);

       L=creat(n);

       fun(L);   

}

 

 

 

 

 

# include <stdio.h>

# include <malloc.h>

struct stu

{

 int num;

 struct stu *next;

};

int m,n;struct stu *p,*q,*s;

struct stu *create()

{

 struct stu *head,*s1,*r;

   int i;

 

 head=NULL;

 for(i=1;i<=n;i++)

 {

  s1=(struct stu *)malloc(sizeof(struct stu));

  s1->num =i;

  if(head==NULL)head=s1;

  else r->next =s1;

  r=s1;

 }

 if(r) r->next =head;

 return head;

}

struct stu * get_index(struct stu *head,int k)

{

 int j=1;

 if (k<1)

 {

  printf ("输入错误\n");

  return NULL;

 }

 s=head;

 while (s && j<k)

 {

  s=s->next ;j++;

 }

 return s;

}

void f1 (struct stu *head,struct stu *h)

{

 int x,i;

 x=m/2;

 p=h;

 i=1;printf ("依次出列的人的编号为:");

 while (p->next!=p)

 {

  q=p->next;

  for (i=1;i<x;i++)

  {p=q->next;q=p->next;}

  p->next =q->next ;

  printf ("%d ",q->num);

  free(q);

  p=p->next ;

 }

 printf ("最后剩下的人的编号为%d\n",p->num );

}

void f2 (struct stu *head,struct stu *h)

{

 int i,x;

 x=m/2;

 i=1;

 p=h;

 printf ("依次出列的人的编号为:");

 do

 {

  for (i=1;i<=x;i++)

  {q=p->next ;p=q->next ;}

  q->next =p->next ;

  printf ("%d ",p->num);

  free(p);

  p=q->next ;

 }

 while (q->next!=q);

    printf ("\n最后剩下的人的编号为%d\n",q->num);

}

void main ()

{

 int k;

 struct stu *head,*h;

 printf ("请输入总人数:");

 scanf ("%d",&n);

 printf ("请输入退出圈子的人的编号:");

 scanf("%d",&m);

 printf ("请输入开始报数的人的编号:");

 scanf ("%d",&k);

    head=create ();

 h=get_index(head,k);

 if (m%2==0) f1(head,h);

 else  f2(head,h);

}

 

热心网友 时间:2023-05-18 05:28

agree

热心网友 时间:2023-05-18 05:29

  参考代码:
  #include<stdio.h>
  #include<stdlib.h>
  #include<malloc.h>
  typedef struct LNode{
  int number;
  struct LNode *next;
  } LNode,*Linklist;
  int main()
  {
  int M,N;
  int i;
  Linklist L,r;
  printf("Please input two M , N:");
  scanf("%d%d",&M,&N);
  L = (Linklist)malloc(N * sizeof(struct LNode));
  if(L == NULL) printf("Error!\n"),exit(0);
  r = L;
  for(i = 1;i < N;i++)
  {
  r->next = L + i;
  r->number = i;
  r = r->next;
  }
  r->next = L;
  r->number = N;
  while(r != r->next)
  {
  for(i = 0;i < M - 1;i++)
  r = r->next;
  printf("%4d",r->next->number);
  r->next = r->next->next;
  }
  printf("\n When N = %d and M = %d,Josephus,hiding in position %d survive.\n",N,M,r->number);
  free(L);
  }
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
街头篮球手游中锋攻略汇总 C位攻略大全 街头篮球手游中锋有什么技巧 中锋C技巧详解 php一个表单提交数据怎么区分开,隐藏域可以吗,如果可以怎么用。 梦见牙掉光了什么预兆 梦见牙齿掉完了是什么征兆 梦见牙齿全掉了是什么预兆 梦见一口牙全部掉了是什么预兆 教师年度考核不认课的领导班子成员,干的工作不少,怎样考核办法公平... 湖北省郧西县义务教育学校绩效工资实施办法绩效工资总量和水平的... 事业单位年底是否有绩效奖金的 数据结构约瑟夫环问题急求程序 数据结构(c语言版)--约瑟夫环 关于C语言数据结构的问题(约瑟夫环) 2019年十级伤残赔偿多少钱? 数据结构C语言的约瑟夫环怎么做? 约瑟夫环 c++ 数据结构 用数据结构编写约瑟夫环算法思想 约瑟夫环(Joseph)问题数据结构的实验。c++编程~ 数据结构设计约瑟夫环问题 林芝十级工伤伤残赔偿标准与计算方法 约瑟夫环公式是怎样推导出来的? 约瑟夫环 PHOTOSHOP CS6 EXTENDED【64bit】安装portraiture怎么安装? 承揽合同属于单务合同吗 数据结构 约瑟夫环 为什么我的ps中的portraiture磨皮滤镜突然用不了了 约瑟夫环 数据结构 物业服务合同是否属于承揽合同 用portraiture磨皮后 进入ps图片怎么有网格啦 呢 肿么啦 求大神分享portraiture3滤镜 mac版 或者portraiture 破解补丁也可以 C语言数据结构“采用单向环表实现约瑟夫环。” 数据结构中的约瑟夫环问题用C语言怎么编写出来啊? 约瑟夫环(c语言版数据结构) 下面是约瑟夫环的代码,跪求大神帮忙写出代码对应的算法!越详细越好! 数据结构,约瑟夫环 约瑟夫环问题 用C语言数据结构数组实现... 数据结构约瑟夫环问题(解决了给加50分) 谁能用循环队列的数据结构解决约瑟夫环问题? 计算机一级excel如果不用下拉,而是自己按照公式一个一个计算。会给分吗? 彩云家乡 跪求一首歌。我只记得歌词开头第一句,这里的四季都是春天,这里。。。。。家园 北京青年里面女生唱的那首插曲,其中有句歌词是“彩云飘过我的家乡”,叫什么名字啊? 看过《北京青年》的大侠们,电视剧里,主人公们来到丽江的时候(前面应该也出现过),放过一首插曲, 歌词:我的故乡我的家,就在东方彩云下,儿时听的一首很好听的歌,现在网上都找不到。 有谁看过(北京青年)这电视剧,里面有几首歌,它们的歌名分别叫什么???知道的回答一下,谢了 在北京青年里面,何北和唐娇两个在丽江古镇逛街,那时候酒吧放出来的歌曲叫什么? 北京青年主题曲是什么 四个字中最后两字是家乡歌有那些 急求赞美家乡彩云的现代短诗!!! 北京青年 求里面的萨克斯插曲 谢谢各位了~ 求:北京青年云南片段的歌曲,就是他们在刚到云南丽江在逛街的那段的歌曲。谢谢!