数据结构数组应用-课程设计.doc_第1页
数据结构数组应用-课程设计.doc_第2页
数据结构数组应用-课程设计.doc_第3页
数据结构数组应用-课程设计.doc_第4页
数据结构数组应用-课程设计.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机学院数据结构课程设计题 目:数组应用 班 级:网络工程14104班 姓 名:肖勇 学 号:201417030104 同组人姓名:舒向东 起 迄 日 期: 2014.12.28-2015.3.1 课程设计地点: 湖南文理学院 指导教师:邹汉斌 评阅意见:成绩评定:评阅人: 日期:完成日期:2014年12月目录1.需求分析32.概要设计(含流程图)33.详细设计(含代码分析)34.调试分析和测试结果115.总结126.参考文献127.致谢121.需求分析 该程序可以根据用户要求定义任意定义四维数组四个下标的最大值,用户可以根据需要输入一定数目的元素放入四维数组中,放入数组中元素的数目由用户自己决定,但不能大于数组的存储空间,用户如果想在数组中放入更多的元素,可以增大数组的存储空间。根据实验要求,从键盘输入的元素以行优先存入数组,以列优先显示出来。2.概要设计(含流程图) 该程序包含两个函数,一个函数是把从键盘获得的元素以行优先顺序放入四维数组中,另一函数是把数组中的元素以列优先顺序输出到显示屏。Main函数中有四维数组的定义和赋值,还有以上两个函数的调用,实现了实验要求的功能。以下是本查询的实验流程图四维数组将数组中的元素以列优先书序显示到显示屏从键盘获取元素以行优先放入四维数组中从键盘输入元素以列优先顺序显示四维数组中的元素3.详细设计(含代码分析)3.1、定义四维数组动态数组是指在声明时没有确定数组大小的数组,即忽略方括号中的下标;当要用它时,可随时用ReDim语句(C语言中用malloc语句)重新指出数组的大小。使用动态数组的优点是可以根据用户需要,有效利用存储空间。其原理以三维数组为例说明:先遵循从外层到里层,逐层申请的原则:最外层指针是array,它是个三维指针,所指向的是array,其为二维指针。所以给array申请内存应:array=(int*)calloc(n1,sizeof(int*);次层指针是array,它是个二维指针,所指向的是array,其为一维指针。所以给array申请内存应:for(i=0;in1;i+)arrayi=(int*)calloc(n2,sizeof(int*);最内层指针是array,它是个一维指针,所指向的是array,其是个整型常量。所以给array申请内存应:for(i=0;in1;i+)for(j=0;jn2;j+)arrayij=(int*)calloc(n3,sizeof(int);当然,你可以把它们整合在一起为:int i,j,k;int n1,n2,n3;int *array;scanf(%d%d%d,&n1,&n2,&n3);array=(int*)calloc(n1,sizeof(int*);for(i=0;in1;i+)arrayi=(int*)calloc(n2,sizeof(int*);for(j=0;jn2;j+)arrayij=(int*)calloc(n3,sizeof(int);for(k=0;kn3;k+)arrayijk=i+j+k+1;最后不要忘了释放这些内存,这要遵循释放的时候从里层往外层,逐层释放的原则。分析过程可参考上面的解答,这里不再赘述。只给出代码吧:for(i=0;in1;i+)for(j=0;jn2;j+)free(arrayij);/释放第三维指针for(i=0;in1;i+)free(arrayi);/释放第二维指针free(array);/释放第一维指针四维创建过程同此。3.2、数组赋值 以四个for循环将数组中的所有空间都存入最大值32767。3.3、将元素放入数组结合我们熟悉的二维数组的赋值,四维数组的赋值同理,先从低层开始,逐个走向高层,但是要放入数组中的元素个数并不是恰好等于数组的空间大小,所以我们设计了一记数的变量,该变量初始化为0,当你想要往数组中存放n个数时,该变量每循环一次加一,当该变量增加到n时不在要求从键盘输入元素。3.4、将元素从数组中输出四个for循环中各个递增的变量在数组下标中的排序恰好相反,因为输入是以行优先顺序的,而输出是以列优先顺序的。而每个元素在一维数组中的序号是与数组的四个下标有联系的,可以根据这个联系运算出来。3.5、代码分析#include#includestatic int m,n,p,q,r;/m,n,p,q分别表示四个维度,r表示要输入的元素个数/将从键盘输入的元素存入四维数组中int creatarray(int *array)int x;/变量x暂存从键盘输入的元素int i,j,k,l;int c=0;cout请输入您想要存入四维数组中的元素(以行优先顺序存入值且小于32767):endl;/以行优先顺序存储for(i=0;im;i+)for(j=0;jn;j+)for(k=0;kp;k+)for(l=0;lx;arrayijkl=x;/将从键盘获得的元素值放入四维数组中+c;if(c=r)return(0);/若已达到输入个数,结束并返回return(0);/函数有返回值/将四维数组中的元素按列优先顺序输出void showarray(int *array) int i,j,k,l;cout以列优先顺序输出结果为:endl;/列优先输出for(i=0;iq;i+)for(j=0;jp;j+)for(k=0;kn;k+)for(l=0;lm;l+)if(arraylkji!=32767)/若该位置存有从键盘输入的值,则输出cout序号:l*(n*p*q)+k*(p*q)+j*(q)+(i+1) arraylkji=arraylkjiendl;void main()int i,j,k,l;cout=1)mnpq;/从键盘输入四个维数cout请输入您想要存入四维数组中的元素的个数:(个数=m*n*p*q)r;/从键盘获得元素个数/定义四维数组int *array= (int*)malloc(m)*sizeof(int*);/最外层四维指针for(i=0;im;i+)arrayi= (int*)malloc(n)*sizeof(int*);/次外层三维指针for(j=0;jn;j+)arrayij=(int*)malloc(p)*sizeof(int*);/次内层二维指针for(k=0;kp;k+)arrayijk=(int*)malloc(q)*sizeof(int);/最内层一维指针for(l=0;lq;l+)arrayijkl=m+n+p+q+1;/检查是否分配内存成功if(!array)cout内存分配失败!;/将数组中全部元素赋值为32767,便于以列优先输出时检查for(i=0;im;i+)for(j=0;jn;j+)for(k=0;kp;k+)for(l=0;lq;l+)arrayijkl=32767;/行优先创建四维数组creatarray(array);/列优先输出四维数组showarray(array);/释放内存for(i=0;im;i+)for(j=0;jn;j+)for(k=0;kp;k+)free(arrayijk);/释放四维指针for(i=0;im;i+)for(j=0;jn;j+)free(arrayij);/释放三维指针for(i=0;im;i+)free(arrayi);/释放二位指针free(array);/释放一维指针4.调试分析和测试结果5.总结(心得和体会)通过这次的实践,我学到了许多东西,首先,我们要在学习过程中要注重基础,认真学习课本上的知识;其次,在写程序的过程中要善于思考,在写之前要策划好怎么写,这样写的时候才能思路明确,写的时候不会不知所措;最后,要学会善于变通,勇于尝试,敢于创新。同时细心也是程序能成功出来的必须条件。要多练习基础,才不会在

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论