• 生活小常识
  • 生活技能学习
  • 安全知识
  • 理财知识
  • 礼仪知识
  • 节日知识
  • 旅游知识
  • 健康知识
  • 当前位置: 工作范文网 > 生活 > 健康知识 > 正文

    2020年约瑟夫问题求解实验报告

    时间:2020-11-26 11:34:13 来源:工作范文网 本文已影响 工作范文网手机站

      约瑟夫问题求解实验报告 姓名程裕博 学号149074353 班级物联网工程 141 班

      一、

      实验目的 1、 掌握上机调试线性表的基本方法; 2、 掌握线性表的基本操作插入、删除、查找等运算在顺序存储结构和链式存储结构上的运算。

      3、 掌握约瑟夫问题求解算法 二、

      实验内容 1、 认真阅读和掌握本实验的参考程序,并上机运行本程序,可尝试完善删除、查找等运算。

      2、 参考第二章课件中对瑟夫问题求解算法的描述,选择一种存储结构实现该问题的求解。

      三、

      注意事项

      1、在磁盘上创建一个目录,专门用于存储数据结构实验的程序,可通过 U 盘或邮箱长期保存程序。

      2、实验报告要求(1)算法的完整代码;(2)程序运行结果及分析;(3)实验总结

      实验源代码

      #include"stdio.h" #include"stdlib.h" #include"malloc.h" typedef struct node {

      int data;

      struct node *next; }*plinklist; plinklist setlink() {

      plinklist list,p,r;

      int i,n;

      printf("请输入所有个体的个数");

      scanf("%d",&n);

      list=(plinklist)malloc(sizeof(struct node));

      if(list!=NULL)

      {

      r=list;

      printf("请输入您的序号");

      scanf("%d",&r->data);

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

      {

      p=(plinklist)malloc(sizeof(struct node));

      r->next=p;

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

      r=p;

      p->next=NULL;

      }

      }

      else

      printf("创建失败!\n");

      p->next=list;

      return list; } void josephus(plinklist list,int s,int m) {

      plinklist p,pre;

      int i;

      if(!list)

      printf("表中没有元素");

      p=list;

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

      p=p->next;

      printf("输出约瑟夫序列");

      while(p!=p->next)

      {

      pre=p->next;

      while(pre->next!=p) pre=pre->next;

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

      {

      pre=p;

      p=p->next;

      }

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

      pre->next=p->next;

      free(p);

      p=pre->next;

      }

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

      free(p);

      putchar("\n"); } void main()

      {

      int s,m;

      plinklist t;

      t=setlink();

      printf("请输入第一个元素的位置,以及间隔的位数:");

      scanf("%d%d",&s,&m);

      josephus(t,s,m); } 实验截图

      实验总结

    • 下载文档
    • 收藏
    • 0

    有关的专题