数据结构课程设计实验报告

发布 2022-10-05 20:08:28 阅读 8308

题目:拉丁方阵问题。

拉丁方阵是一种n×n的方阵,方阵中恰有n种不同的元素,每种元素恰有n个,并且每种元素在一行和一列中恰好出现一次。著名数学家和物理学家欧拉使用拉丁字母来作为拉丁方阵里元素的符号,拉丁方阵因此而得名。例如下图是一个3×3的拉丁方阵:

如果一个拉丁方阵的第一行和第一列按照元素的先后顺序来排列,那么这称为拉丁方阵的标准型,例如下图就是一个3x3的拉丁方阵标准型,第一行和第一列都是”1 2 3”。

你的任务是,编写一个程序读入一个方阵,判断其是否为拉丁方阵;进一步地,判断是否为标准型。

要求:1)输入包含多组数据。每组数据第一行为正整数n,表示方阵的大小。

其后n行,每行有n个1到n之间的整数,整数之间恰有一个空格,表示方阵的内容。输入保证1≤n≤100输入以n=0结束,不要处理这个数据。

2)每组数据对应于一行输出。如果输入是拉丁方阵,但不是标准型则输出1;如果输入是标准型则输出2;如果输入不是拉丁方阵则输出0。

3)应用“数据结构与算法”课程知识建立该问题的数据结构模型;

4)分析算法的时间性能。

1、问题分析和任务定义。

编写程序,输入多组数据,判断输入的方阵的类型,并输出结果。

1)每组数据第一行为正整数n,表示方阵的大小。其后n行,每行有n个1到n之间的整数,整数之间恰有一个空格,表示方阵的内容。输入保证1≤n≤100输入以n=0结束,不处理这个数据。

2)每组数据对应于一行输出。如果输入是拉丁方阵,但不是标准型则输出1;如果输入是标准型则输出2;如果输入不是拉丁方阵则输出0。

2、数据结构的选择和概要设计。

1) 实现所要求的测试结果可先定义一个长度为n的数组作为结构类型,然后定义一个a[100][100]用于输入的方阵的存储。

如要实现以上功能,需要将方阵保存在100行100列的数组存储结构中。1.判断各行的元素和各列的元素是否有序。2.判断方阵类型,各行各列是否有相等的数据。

2)此程序包含三个子函数和一个主函数:

int panduan1(int a[100][100],int n)//判断各行是否有相等数据。

int panduan2(int a[100][100],int n)//判断各列是否有相等数据。

int panduan3(a[100][100],int n)//判断第一行和第一列是否有序。

void main()/主函数。

3.流程图。

4、详细设计。

1)定义a[100][100]。

2)输入方阵

for (i=0;i

return ch;//符合数组各行无相等数据返回l=1

4)判断各列是否有相等数据。

for(i=0;i

return ch;//符合数组各列无相等数据返回m=1

5)判断有序。

for(i=0;i

for(j=0;j

6)判断条件若有序情况下继续判断行列是否相等。

if((flag1==0)&&flag2==0))

return ch;//行与列不相等则不是标准型返回n=1

7)输出判断的方阵类型。

if(k==1&&s==1)

else printf("0 ")不是拉丁方阵。

5、上机调试过程。

在主函数中输入方阵数据,并调用子函数运行,输出结果。第一次运行时,出现了很多错误。在我的逐条分析下,发现很多是语法错误。

便仔细查看,一一改正过来。开始时,我所编写的程序,不能判断当输入的数大于n的情况。编写不符合要,我在主函数中添加了一条比较语句,得以实现题目的要求。

6、测试结果及其分析。

7、用户使用说明。

根据提示输入一个n阶的方阵,再根据提示输入方阵数据,运行后输出方阵并判断方阵类型,按任意键退出。

8、参考文献。

1] 王昆仑,李红。 数据结构与算法。 北京:中国铁道出版社,2023年5月。

2] 胡学钢。 数据结构与算法指导。北京:清华大学出版社,1999。

3] 胡学钢。 数据结构。北京:高等教育出版社,2006。

9、附录。源程序:

#include ""

#include""

int panduan1(int a[100][100],int n)//判断各行是否有相等数。

int ch=1;int i,j,k;

for (i=0;i//行数有相等 k=0

return ch;//符合数组各行不相等返回 k=1

int panduan2(int a[100][100],int n)//判断各列是否有相等数。

int ch=1;

int i,j,k;

for(i=0;i //列数有相等 s=0

return ch;//符合数组各列不相等返回 s=1

int panduan3(int a[100][100],int n)//判断首行首列是否相等。

int ch=1,flag1=1,flag2=1;int i,j;

for(i=0;iif(a[0][i]flag1=0;break;}

for(j=0;jif(a[j][0]flag2=0;break;}

if(flag1==0&&flag2==0)

for (i=1;i

return ch;//不相等不是标准 m=1

void main

int n,i,j;

int k,s,m;

int a[100][100];

printf("请输入方阵阶数:");

scanf("%d",&n);

printf("输入矩阵的数据%d个",n*n);

k=panduan1(a,n);

for (i=0;ielse

else printf("0");

数据结构课程设计实验报告

数据结构。课程设计报告。xx大学计算机xxxx学院。计算机系 08级软件工程专业xx班。xxx学号 0823xxxxxx 班内序号 xx 2010年11月15日。任务 参加运动会有n个学校,学校编号为1 n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1 m,女子m 1 m w。不同的项目取...

数据结构课程设计实验报告

仲恺农业工程学院。课程设计报告。2010 2011年度第1学期 名称 数据结构 课程设计 题目 学生成绩管理系统 院系 计算科学学院 班级 信息与计算科学信计091,092 学号 200911314116 200911314214 学生姓名 许建城刘汉明 指导教师 吴东庆。设计周数1作者1 许建城贡...

数据结构课程设计实验报告

江苏大学计算机学院。软件工程课程设计报告书。课程名称数据结构课程设计总评成绩。学生姓名 学号卢江涛3100608047 学生专业班级软件工程软件1002班。指导教师姓名王新胜。一 问题描述。以邻接表的方式确定有向网,完成 1.建立并显示它的邻接链表 2.以非递归的方式进行深度优先遍历,显示遍历的结果...