数据结构课程设计数据结构课设总结

数据结构课程设计  时间:2021-09-23  阅读:()

数据结构课程设计 稀疏矩阵实现与应用

(1)#include <stdio.h> int main() { int i,j,k,num; int *arr; printf("输入非0元素的数量:"); scanf("%d",&num); arr=(int *)malloc(sizeof(int)*(num+1)*3); for(i=1;i<=num;i++) { printf("输入第%d个三元组数据",i); scanf("%d%d%d",&arr[i*3],&arr[i*3+1],&arr[i*3+2]); } for(i=1;i<=num;i++) //获取稀疏矩阵的行和列 { if(arr[0]<arr[i*3]) arr[0]=arr[i*3]; //保存矩阵的行 if(arr[1]<arr[i*3+1]) arr[1]=arr[i*3+1]; //保存矩阵的列 } arr[2]=num;//元素数量 printf("稀疏矩阵三元组: "); for(i=0;i<=num;i++) //输出三元组数据 { for(j=0;j<3;j++) printf("%4d", arr[i*3+j]); printf(" "); } printf("稀疏矩阵: "); k=1; for(i=0;i<=arr[0];i++) //稀疏矩阵的行数 { for(j=0;j<=arr[1];j++) //稀疏矩阵的列数 { if(i==arr[k*3] && j==arr[k*3+1] && k<=arr[2]) { printf("%4d ",arr[k*3+2]); //输出非0数据 k++; } else printf("%4d ", 0); //输出0 } printf(" "); } getch(); return 0; } 三元组形式保存的稀疏矩阵还原为矩阵并输出 (2)#include <stdio.h> void MatrixMul(int **a,int **b, int **c, int x, int y, int z) { int i,j,k; for (j=0;j<y;j++) //清空目标矩阵C的内容 for(i=0;i<x;i++) c[j][i]=0; for(j=0;j<y;j++) //进行矩阵乘法运算 for(i=0;i<x;i++) for(k=0;k<z;k++) c[j][i]+= a[j][k]*b[k][i]; } int main() { int i,j,k,tmp; int ARow,ACol; //矩阵A的行、列 int BRow,BCol; //矩阵B的行、列 int CRow,CCol; //矩阵C的行列 int **a,**b,**c; //分别指向3个矩阵的内存 printf("输入矩阵A的行数和列数:");//输入矩阵A的行数、列数 scanf("%d %d",&ARow,&ACol); BRow=ACol; //矩阵B的行数等于矩阵A的列数 printf("输入矩阵B的列数:");//输入矩阵B的列数 scanf("%d",&BCol); CRow=ARow; //目标矩阵C的行数 CCol=BCol; //目标矩阵C的列数 c=(int **)malloc(sizeof(int *)*CRow); //分配保存矩阵C的二级指针存储空间 for(j=0;j<CRow;j++) //分配一级指针内存空间 c[j]=(int *)malloc(sizeof(int)*CCol); a=(int **)malloc(sizeof(int *)*ARow);//分配保存矩阵A的二级指针 for(j=0;j<ARow;j++) a[j]=(int *)malloc(sizeof(int)*ACol); b=(int **)malloc(sizeof(int *)*BRow); //分配保存矩阵B的二级指针 for(j=0;j<BRow;j++) b[j]=(int *)malloc(sizeof(int)*BCol); if(!b[BRow-1]) //判断内存是否分配成功 { printf("分配内存失败! "); exit(0); } printf("输入矩阵A的数据(%d行%d列): ",ARow,ACol);//输入A阵元素 for(j=0;j<ARow;j++) for (i=0;i<ACol;i++) { scanf("%d",&tmp); a[j][i]=tmp; } printf("输入矩阵A的数据(%d行%d列): ",BRow,BCol);//输入B阵元素 for(j=0;j<BRow;j++) for (i=0;i<BCol;i++) { scanf("%d",&tmp); b[j][i]=tmp; } MatrixMul(a,b,c,CCol,CRow,ACol);//调用矩阵乘法函数 printf("矩阵相乘的结果: "); for(j=0;j<CRow;j++) //输出矩阵乘法结果 { for(i=0;i<CCol;i++) printf("%d ",c[j][i]); printf(" "); } getch(); return 0; } 矩阵乘法 (3) 多维矩阵转一维矩阵(以2维为例) #include <stdio.h> #include <stdlib.h> int main() { int row, column,i,ARow,ACol,loc,tmp; int **arr1,*arr2; //分别指向2个矩阵的内存 printf("输入矩阵的行数和列数:");//输入矩阵A的行数、列数 scanf("%d %d",&ARow,&ACol); arr1=(int **)malloc(sizeof(int *)*ARow); //分配保存矩阵的二级指针存储空间 for(i=0;i<ARow;i++) //分配一级指针内存空间 arr1[i]=(int *)malloc(sizeof(int)*ACol); arr2=(int *)malloc(sizeof(int)*ARow*ACol);//分配保存一维矩阵的存储空间 if(arr1==NULL) //判断内存是否分配成功 { printf("分配内存失败! "); exit(0); } printf("输入二维矩阵的数据(%d行%d列): ",ARow,ACol);//输入A阵元素 for(row=0;row<ARow;row++) for(column=0;column<ACol;column++) { scanf("%d",&tmp); arr1[row][column]=tmp; } printf(" 以行为主转换为一维矩阵: "); for(row=0;row<ARow;row++)//按行循环 { for(column=0;column<ACol;column++) //按列循环 { loc=column+row*ACol; //转换为一维矩阵的序号 arr2[loc]=arr1[row][column]; //保存元素 } } for(i=0;i<ARow*ACol;i++) //输出一维矩阵 printf("%d ", arr2[i]); printf(" 以列为主转换为一维矩阵: "); for(column=0;column<ACol;column++) { for(row=0;row<ARow;row++) { loc=row+column*ARow; //转换为一维矩阵的序号 arr2[loc]=arr1[row][column]; //保存元素 } } for(i=0;i<ARow*ACol;i++) //输出一维矩阵 printf("%d ", arr2[i]); printf(" "); getch(); return 0; } 就这些了不满意也就没办法了

数据结构课程设计--一元多项式计算

#include&lt;stdio.h&gt; #include&lt;malloc.h&gt; #include&lt;stdlib.h&gt; typedef struct polynode { int coef; //多项式的系数 int exp; //指数 struct polynode *next; }node; node *create() //用尾插法建立一元多项式的链表 { node *h,*r,*s; int c,e; h=(node*)malloc(sizeof(node)); r=h; printf("coef:"); scanf("%d",&amp;c); printf("exp: "); scanf("%d",&amp;e); while(c!=0) //输入系数为0时,多项式的输入结束 { s=(node*)malloc(sizeof(node)); s-&gt;coef=c; s-&gt;exp=e; r-&gt;next=s; r=s; printf("coef:"); scanf("%d",&amp;c); printf("exp: "); scanf("%d",&amp;e); } r-&gt;next=NULL; return(h); } void print(node *p) //输出函数,打印出一元多项式 { while(p-&gt;next!=NULL) { p=p-&gt;next; printf(" %d*x^%d",p-&gt;coef,p-&gt;exp); } } void polyadd(node *ha, node *hb)//一元多项式相加函数,用于将两个多项式相加,然后将和多项式存放在多项式ha中,并将多项式hb删除 { node *p,*q,*pre,*temp; int sum; p=ha-&gt;next; q=hb-&gt;next; pre=ha; while(p!=NULL&amp;&amp;q!=NULL) { if(p-&gt;exp&lt;q-&gt;exp) { pre-&gt;next=p; pre=pre-&gt;next; p=p-&gt;next; } else if(p-&gt;exp==q-&gt;exp) { sum=p-&gt;coef+q-&gt;coef; if(sum!=0) { p-&gt;coef=sum; pre-&gt;next=p;pre=pre-&gt;next;p=p-&gt;next; temp=q;q=q-&gt;next;free(temp); } else //如果系数和为零,则删除结点p与q,并将指针指向下一个结点 { temp=p-&gt;next;free(p);p=temp; temp=q-&gt;next;free(q);q=temp; } } else { pre-&gt;next=q; pre=pre-&gt;next; q=q-&gt;next; } } if(p!=NULL) //将多项式A中剩余的结点加入到和多项式中 pre-&gt;next=p; else pre-&gt;next=q; } void multipoly(node *ha,node *hb) { node *p,*q,*n,*m; p=ha-&gt;next; n=(node*)malloc(sizeof(node)); n-&gt;next=NULL; while(p!=NULL) { m=(node*)malloc(sizeof(node)); for(q=hb-&gt;next;q;q=q-&gt;next) { m-&gt;coef=p-&gt;coef*q-&gt;coef; m-&gt;exp=p-&gt;exp+q-&gt;exp; m-&gt;next=NULL; } p=p-&gt;next; polyadd(n,m); } printf("多项式的积是: "); print(n); } void main() { node *ha,*hb; printf("请输入多项式ha的系数与指数: "); ha=create(); print(ha); printf(" "); printf("请输入多项式hb的系数与指数: "); hb=create(); print(hb); printf(" "); printf("多项式的和是: "); polyadd(ha,hb); print(ha); printf(" "); multipoly(ha,hb); }

数据结构课设总结

我正好在做课设,我把我的总结给你。

数据结构是计算机程序设计的重要理论技术基础,它不仅是计算机科学的核心课程,而且也已经成为其他理工专业的热门选修课。

随着高级语言的发展,数据结构在计算机的研究和应用中已展现出强大的生命力,它兼顾了诸多高级语言的特点,是一种典型的结构化程序设计语言,它处理能力强,使用灵活方便,应用面广,具有良好的可移植性。

紧张的两周数据结构实训很快就过去了,通过这两周的实践学习,不仅使我们巩固了以前的知识并在此基础上还对数据结构的特点和算法有了更深的了解,使我们在这门课程的实际应用上也有了一个提高。

首先这两周的学习,使我们在巩固了原有的理论知识上,又培养了灵活运用和组合集成所学过知识及技能来分析、解决实际问题的能力,使我们体会到自身知识和能力在实际中的应用和发挥。

其次,它激发了我们创新意识,开发创造的能力和培养沟通能力。

另外,让我们进一步熟悉了数据结构的设计应用。

每一处编码都是在反复的熟悉数据结构的结构特性,及其语法、函数和程序设计思想的过程,对我们数据结构的学习和提高很有益处,并且使我们明白了程序设计过程,如解决一些实际问题,从解决实际问题的角度,我们可以这样来看:第一要了解这个问题的基本要求,即输入、输出、完成从输入到输出的要求是什么;第二,从问题的要害入手,从前到后的解决问题的每个方面,即从输入开始入手,着重考虑如何从输入导出输出,在这个过程中,可确定所需的数据结构的基本类型——线性表、栈、队列、串、数组、广义表、树和二叉树以及图等,然后确定处理过程——算法,通过在编译环境中的编译与调试,可到最终的程序。

最后,在这次的实训过程中,我们深刻的认识到了自己在学习方面的不足之处,我知道我还有太多的基本的思想没有真正的理解,当然我们不会灰心,我们会在以后的日子里努力弥补我们的不足。

在两周的实训中,我们也体会到了团队合作的重要性,从最初的查阅资料到最后的程序的成功运行,我们组有过山穷水尽的困惑;有过柳暗花明的惊喜;有过唇枪舌剑的辩论;有过相互鼓励的安慰。

两个礼拜的时间我们经历了很多,也收获了很多。

与其说这次的实训是体力与脑力的作业,不如说它是合作精神和毅力的考验。

经过这次课程设计,我们不仅学到了很多知识和技能,更重要的是我们学会了如何运用所学知识去解决实际问题。

总之,两个礼拜的课程设计让我们受益匪浅。

我们深深认识到,要学好一门学科,没有刻苦钻研的精神是不行的,只有在不断的尝试中,经历失败,从失败中总结经验,然后再不断的尝试,才能获得成功。

香港最便宜的vps要多少钱?最便宜的香港vps能用吗?

香港最便宜的vps要多少钱?最便宜的香港vps能用吗?香港vps无需备案,整体性能好,而且租用价格便宜,使用灵活,因为备受站长喜爱。无论是个人还是企业建站,都比较倾向于选择香港VPS。最便宜的香港vps能用吗?正因为有着诸多租用优势,香港VPS在业内颇受欢迎,租用需求量也在日益攀升。那么,对于新手用户来说,香港最便宜的vps租用有四大要点是务必要注意的,还有易探云香港vps租用最便宜的月付仅18元...

NameSilo域名优惠码活动

NameSilo是通过之前的感恩节优惠活动中认识到这家注册商的,于是今天早上花了点时间专门了解了NameSilo优惠码和商家的详细信息。该商家只销售域名,他们家的域名销售价格还是中规中矩的,没有像godaddy域名标价和使用优惠之后的价格悬殊很大,而且其特色就是该域名平台提供免费的域名停放、免费隐私保护等功能。namesilo新注册域名价格列表,NameSilo官方网站:www.namesilo....

提速啦(24元/月)河南BGP云服务器活动 买一年送一年4核 4G 5M

提速啦的来历提速啦是 网站 本着“良心 便宜 稳定”的初衷 为小白用户避免被坑 由赣州王成璟网络科技有限公司旗下赣州提速啦网络科技有限公司运营 投资1000万人民币 在美国Cera 香港CTG 香港Cera 国内 杭州 宿迁 浙江 赣州 南昌 大连 辽宁 扬州 等地区建立数据中心 正规持有IDC ISP CDN 云牌照 公司。公司购买产品支持3天内退款 超过3天步退款政策。提速啦的市场定位提速啦主...

数据结构课程设计为你推荐
电力仿真现在比较实用的电气仿真软件有哪些?点到直线的距离公式点到直线的距离公式是什么怎么运用,求举下例子或题型视维视频会议Vidyo视频会议好吗ibm磁盘阵列请问什么是RAID5?什么是IBM RAID5卡?csol进不去CSOL怎么进不去游戏?csol进不去为什么我下了csol打不开机柜生产厂中国生产机箱机柜最大的最集中的地方在哪?企业客服系统软件寻求一款操作简单的客服系统,推荐下青牛科技青牛科技有限公司怎么样?上海第二工业大学地址上海第二工业大学怎么样 ?客观真实!
过期域名查询 韩国vps俄罗斯美女 vps代理 广东vps 中国万网域名 idc测评网 美国php主机 12u机柜尺寸 中国特价网 本网站服务器在美国 qq数据库下载 创梦 anylink web服务器架设 双线主机 cdn加速是什么 便宜空间 下载速度测试 smtp服务器地址 免费的域名 更多