编辑: 星野哀 2013-06-08

1 到n之间的学号依次储存 数据结构课程实验报告 -

4 - 到数组中. (2) 根据输入的 m 准备两个数组的储存空间, 将接下来输入的调整指令 (调整谁? 怎么调整?)储存起来. (3) 根据 m 个调整指令对第一个数组中储存的学号不断地调整位置,调整结束后 将最终学号顺序输出即可. ADT 的表示: ADT IntegerSet{ 数据对象:m(m ∈ 整数),n(n ∈ 整数),D0={Student[i] ∈ 整数,i=1,2,3, … … ,n},D1={a1[i] ∈ 整数,i=1,2,3, … … ,m}, D2={a2[i] ∈ 整数,i=1,2,3,……,m}. 数据关系:R0{| Student[i-1], Student[i] ∈ D0},R1{| a1[i-1],a1[i] ∈ D1},R2{| a1[i-1],a1[i] ∈D2}. } 2.算法的基本思想 先将给出的学生依次进行编号, 再依次进行每一次改变位置的指令的执行. 在指令 执行的过程中, 先将要移动的同学的位置找到, 要知道要移动的同学在队伍中排在第几 个,找到他之后,判断是要向前移动,还是向后移动.如果将这个同学向前移动,就先 把他前面的同学往后移动,把他的位置腾出来,然后把他放到他应该待的位置去,反之 亦然.在所有位置移动都完成之后将同学们的排序输出即可. 3.程序的流程 (1)先将同学们进行编号,从大至小. (2)输入移动位置的指令. (3)在每一个位置改变的指令输入之后就根据指令来进行相应位置的改变. (4)输出最终的学生序列.

三、详细设计 1.物理数据类型 本题应用线性表即可以解决,通过三个线性表的相互联系完成位置调整. 1. int Student[n];

for(int i=0;

ia1[i]>>a2[i];

} 2.输入和输出的格式 输入: 第一行只有一个整数,表示学生个数 n,第二行也只有一个整数 m,表示要移动几次学 生位置,接下来有 m 行,每行两个数,分别代表这一次将谁向哪边移动多少. 输出: 输出只有一行,输出调整位置之后学生序号排列,相邻的数以空格分开. 数据结构课程实验报告 -

5 - 3.算法的具体步骤 (1)学生初始编号: int n;

定义一个整形变量代表学生总人数 cin>>n;

输入学生总人数 int Student[n];

定义一个整形数组记录所有学生的学号 for(int i=0;

i>m;

输入调整次数 int a1[m],a2[m];

定义两个长度为 m 的数组分别代表 m 次调整中是调整谁,向哪边 调整多少 for(int i=0;

i>a1[i]>>a2[i];

分别输入每次调整对象和方向大小 } (3)具体调整过程: int x;

定义整形变量 x 来记录要调整的同学的初始位置 for(int j=0;

j0)通过 a2 的正负来判断是向前调整还是向后调整 { for(int j=x;

j

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题