《数据结构与算法设计》约瑟夫环实验报告—-实验一专业:物联网工程班级:物联网 1 班学号:姓名:刘沛航一、 实验目得 1、熟悉 VC 环境,学习使用 C 语言利用链表得存储结构解决实际得问题
2、在编程、上机调试得过程中,加深对线性链表这种数据结构得基本概念理解
3、锻炼较强得思维与动手能力与更加了解编程思想与编程技巧
二、实验内容 1、 采纳单向环表实现约瑟夫环
请按以下要求编程实现:① 从键盘输入整数 m,通过 cre a te 函数生成一个具有 m 个结点得单向环表
环表中得结点编号依次为 1,2,……,m
② 从键盘输入整数 s(1〈=s〈=m)与 n,从环表得第 s 个结点开始计数为 1,当计数到第 n 个结点时,输出该第 n 结点对应得编号,将该结点从环表中消除,从输出结点得下一个结点开始重新计数到 n,这样,不断进行计数,不断进行输出,直到输出了这个环表得全部结点为止
例 如 , m= 1 0 , s =3, n = 4
则 输 出 序 列 为 :6 , 1 0 ,4,9,5,2,1,3,8,7
三、程序设计 1、概要设计为了解决约瑟夫环得问题,我们可以建立单向环表来存储每个人得信息(该人得编号以及其下一个人得编号),及结点,人后通过查找每个结点,完成相应得操作来解决约瑟夫问题
(1)抽象数据类型定义 ADT Jo h{数据对象:D=数据关系:R1=ﻩ基本操作:ﻩﻩcre a t e(&J, n)ﻩﻩ操作结果:构造一个有 n 个结点得单向环表 J
ﻩsh o w(J)ﻩﻩﻩ初始条件:单向环表 J 已存在
操作结果:按顺序在屏幕上输出 J 得数据元素
ﻩca l c ula te( J,s,n)初始条件:单向环表 J 已存在,s>0,n〉0,s〈环表结点数
操作结果:返回约瑟夫环得计算结果
}A D T Jo h(2)宏定义#define NU L L 0