数据结构约瑟夫

一.问题分析与任务定义

1.对象是什么:

有N个人,每个人都有相应的密码, 对象是一个结构体,它的数据域包含两个数据:数字和密码。

2.要实现的功能:

从键盘上读取每个人的密码,和一个初始密码m,再以线性表的形式存储到计算机中。

循环模拟报数出列过程。在行尾报完数字后,返回到行首,直到行中的元素个数为0

3.处理后结果如何显示:

对于每一个出列的人,打印他的编号

4.数据类型与算法设计:

1)有一个线性表l,其中存储的每个元素都是包含数字和密码的结构的实例。

2)每次按m减小l的容量,直到l的容量为0。

5.抽象数据类型设计:

数据对象:类型是一个包含两个整型变量number和password的结构体

数据关系:根据编号放入一个线性结构,数据关系是编号前后相继,最后一位返回到开头

基本操作:

开一个线性空间

获取元素密码。

删除目标元素并打印其编号

详细示例:m的初始值为20;n=7,7个人的密码依次为:3,1,7,2,4,8,4,首先m值为6

(正确的输出顺序应为6,1,4,7,2,3,5)。

二.线性表ADT设计

1.结构定义:

struct node

{
   int number;

int password;}
  1. ADT类定义

数据对象:D={ai | ai属于node,i=1,2……n,n>=0}

数据关系:R={<ai-1,ai>|ai-1,ai属于D}

基本操作:

void init();//初始化

void moveToStart();//回到链表开头

bool 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值