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

时间:2020-11-26 11:56:06 手机站 来源:网友投稿

  约瑟夫问题求解实验报告 姓名程裕博 学号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

推荐访问:实验报告 约瑟夫 求解 实验 2020年约瑟夫问题求解实验报告

版权声明 :以上文章中选用的图片文字均来源于网络或用户投稿 ,如果有侵权请立即联系我们 , 我们立即删除 。