




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本文格式为Word版,下载可任意编辑——数据结构试验报告魔方阵
试验报告
试验名称:(一)魔方阵(二)本科生导师制问题试验类型:设计性试验班级:20230631学号:2023063114姓名:万星含(一)魔方阵1.问题描述
魔方阵是一个古老的智力问题,它要求在一个m×m的矩阵中填入1~m2的数字(m为奇数),使得每一行、每一列、每条对角线的累加和都相等,如图1所示。②基本要求
?输入魔方阵的行数m,要求m为奇数,程序对所输入的m作简单的判断,
如m有错,能给出适当的提醒信息。?实现魔方阵。?输出魔方阵。③实现提醒
本试验使用的数据结构是数组。
解魔方阵问题的方法好多,这里采用如下规则生成魔方阵。?由1开始填数,将1放在第0行的中间位置。
?将魔方阵想象成上下、左右相接,每次往左上角走一步,会有以下状况:
?左上角超出上方边界,则在最下边相对应的位置填入下一个数字;?左上角超出左边边界,则在最右边相应的位置填入下一个数字;?假使按上述方法找到的位置已填入数据,则在同一列下一行填入下一
个数字。
以3×3魔方阵为例,说明其填数过程,如图2所示。
由三阶魔方阵的生成过程可知,某一位置(x,y)的左上角的位置是(x-1,y-1),假使x-1≥0,不用调整,否则将其调整为x-1+m;同理,假使y-1≥0,不用调整,否则将其调整为y-1+m。所以,位置(x,y)的左上角的位置可以用求模的方法获得,即:
x=(x-1+m)%my=(y-1+m)%m
假使所求的位置已经有数据了,将该数据填入同一列下一行的位置。这里需要注意的是。此时的x和y已经变成之前的上一行上一列了,假使想变回之前位置的下一行同一列,x需要跨越两行,y需要跨越一列,即:
x=(x+2)%my=(y+1)%m④思考
?可以考虑使用其他方法生成魔方阵。任何算法都有不同的实现方法,通过
采用不同实现方法来重新实现算法,这要比单纯学习算法的效果好得多。
2.试验要求
(1)认真阅读和把握和本试验相关的教材内容、算法和设计程序。(3)上机运行程序。
(4)保存和打印出程序的运行结果,并结合程序进行分析。
3.试验目的
(1)设计数据结构;
(2)设计算法完成任意n阶魔方阵的填数;(3)分析算法的时间繁杂度。
4.程序源代码
#include#include#define
MAX_NUM
500
/*
这
里
可
以
修
改
最
大
阶
*/
int{intintintint//forfor//while{printf(\scanf(\if{rowsbreak;}elseprintf(\}}//center
iArray[0][center]//okNumRowSetLineSet//while{if{RowSet}else
+=
(
RowSet
==
0
0;
of
ij
=array
3.功能要求
要求完成以下功能:
⑴插入:将某位本科生或研究生插入到广义表的相应位置;⑵删除:将某本科生或研究生从广义表中删除;⑶查询:查询导师、本科生(研究生)的状况;⑷统计:某导师带了多少个研究生和本科生;⑸输出:将某导师所带学生状况输出。
4.源代码
#include#include#includetypedef#includevoid{charcharGLNodeint
h=CreatGList(str1);printf(\
DecomposeStr(str2,printf(\printf(\
depth=GListDepth(h);printf(\
length=GListLength(h);printf(\printf(\
原
深子
元
度素
个
数
length=%d\
number=%d\
length);number);
number=GListAtomNum(h);
深
度
depth=%d\
表
头
表
尾
广
义
表
str1=%s\
hstr);=%s\=%s\
depth,
*h,
number,
char
main()
str1[]=\str2[]=\
hstr[100];
*p;length;
char
DataType;\
p=GListSearch(h,'d');if
printf(\elseprintf(\头typedef{intunion{
DataType
atom;
//
//原//
子头尾
元
素指指
域针针
struct{
struct
GListNode
*tail;
*head;
struct}val;}GLNode;void{intcharfor(ichif(chif(ch}if(ihstr[j]if(str[i]str[0]
=
'(';
=
val.atom);
}subList;//子表域
{if(str[i]==','//探寻最外层的第一个逗号
for(j=1;itagh->val.atom}else
{hh->tag
DecomposeStr(str,h->val.subList.headif(strcmp(str,h->val.subList.tailelse
h->val.subList.tail}return}int{
==
NULL)归=
dep>
0;=
return求pre
!=max)max
GListLength(GLNode
GLNodeif(h//
递
1;//
递广
=NULL;
premax
+=
//
GListDepth(pre->val.subList.head);
求=
表
归
出义
口
,
空表
表
深深
GListDepth(GLNode
int
max,
空非
*)malloc(sizeof(GLNode));
*)malloc(sizeof(GLNode));
1;hstr);
CreatGList(hstr);
空
时
CreatGList(str);
指
针h;*h)dep;*pre;
度
为
10度h;
pre->val.subList.tail)
头
深
度dep;1;*h)
if(h->tagprefor(max{if(dep}return}int{
==0)return0;//递归出口,原子元素深度为
intGLNodefor(preturn}int{
if(helse{
==
=
h;
number=0;*p;
p!=NULL;p=p->val.subList.tail)
number;number++;
GListAtomNum(GLNode
NULL)
return
*h)0;if(h->tag==0)return1;elsereturnGListAtomNum(h->val.subList.head)
GListAtomNum(h->val.subList.tail);}}GLNode{GLNode
if(h==NULL)
return
NULL;//
查return
if(h->tag==0//回溯至上一层}void{
if(h==NULL)
if(h->tag==1DestroyGList(h->val.subList.tail);free(h);}
////
撤撤
销销
headtail
所所
指指
子子
表表
if(h->tag==1
DestroyGList(GLNode
*h)
p=GListSearch(h->val.subList.tail,x);
//
在
尾
链
中
查
找
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 贵州省考试院2025年4月高三年级适应性考试物理试题及答案
- 烘焙食品项目风险评估报告
- 重庆师范大学《音乐创作软件基础》2023-2024学年第二学期期末试卷
- 广东海洋大学《健身理论与指导》2023-2024学年第二学期期末试卷
- 荆州职业技术学院《口腔生物学》2023-2024学年第二学期期末试卷
- 信阳艺术职业学院《BIM应用技术》2023-2024学年第二学期期末试卷
- 四川省广安市华蓥市2024-2025学年初三下学期调研英语试题含答案
- 中国人民大学《应用文写作与训练》2023-2024学年第一学期期末试卷
- 长春建筑学院《制药过程安全与环境评价》2023-2024学年第二学期期末试卷
- 新余学院《钢琴基础(3)》2023-2024学年第一学期期末试卷
- 反假货币《外币美元》知识考试题库(含答案)
- 重庆大轰炸优秀课件
- 专题01《水银花开的夜晚》 高考语文二轮复习
- 外贸客户报价单中英文格式模板
- 中药学中药性味归经功效归纳
- 专业技术人员职务聘任书
- GB/T 13911-1992金属镀覆和化学处理表示方法
- GB/T 13452.2-2008色漆和清漆漆膜厚度的测定
- 【泉州南音传承与发展研究(论文7200字)】
- 《马克思主义发展史》第五章 马克思列宁主义在苏联的发展及曲折
- 现代汉语词汇学精选课件
评论
0/150
提交评论