没有合适的资源?快使用搜索试试~ 我知道了~
首页数据结构课程设计——约瑟夫问题
数据结构课程设计——约瑟夫问题
需积分: 9 89 浏览量
更新于2023-03-16
评论
收藏 50KB DOC 举报
设编号为1-n的n(n>0)个人按顺时针方向围成一圈.首先第1个人从1开始顺时针报数.报m的人(m 为正整数).令其出列。然后再从他的下一个人开始,重新从1顺时针报数,报m的人,再令其出列。如此下去,直到圈中所有人出列为止。求出列编号序列。
资源详情
资源评论
资源推荐

约瑟夫问题
班级:计算机科学与技术<3>班 姓名:张绍亮 学号:20090810332
问题描述:
设编号为1-n的n(n>0)个人按顺时针方向围成一圈.首先第1个人从1开始
顺时针报数.报m的人(m 为正整数).令其出列。然后再从他的下一个人开始,
重新从1顺时针报数,报m的人,再令其出列。如此下去,直到圈中所有人出
列为止。求出列编号序列。
基本要求:
需要基于线性表的基本操作来实现
需要利用数组来实现线性表
输入输出格式
输入格式:n,m
输出格式:在字符界面上输出这 n 个数的输出序列
需求分析:
输入形式:两个整数 n 和 m
输出形式:在一行中输出 n 个整数
程序功能:能够输出 n 个人的出列编号
样例输入:10 3
样例输出:3 6 9 2 7 1 8 5 10 4
抽象数据类型(ADT)分析:
题目中明确的做了规定:即要用数组来实现线性表相应的操作
数据存储类型描述:
typedef struct {
Int data[MaxLen];//存放元素
Int len; // 存放长度
}LinearList;
顺序表基本操作:
Void Setnull(LinearList L) function:顺序表置为空表
Int Lenth(LinearList L) function:返回顺序表的长度
Int get(LinearList L,int i) function: 返回顺序表中下标为 i 的元素
Int locate(LinearList L,int x) fuction: 在顺序表 L 中返回值为 x 的元素的下标
Void insnode(LinearList L,int x,int i) function:在 L 的第 i 个位置上插入元素 x
Void delnode(LinearList L,int i) function:删除 L 中下标为 i 的结点
Void display(LinearList L) function:显示顺序表中元素的信息
概要设计:
通过顺序表来将出列人的标号按照出列的顺序在线性表进行删除和输出到
介面的操作,知道最后顺序表位空表的时候终止算法!
安全验证
文档复制为VIP权益,开通VIP直接复制

评论0