一.问题分析与任务定义
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;}
- ADT类定义
数据对象:D={ai | ai属于node,i=1,2……n,n>=0}
数据关系:R={<ai-1,ai>|ai-1,ai属于D}
基本操作:
void init();//初始化
void moveToStart();//回到链表开头
bool