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

数据结构课程设计  时间: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); }

数据结构课设总结

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

imidc:$88/月,e3-1230/16G内存/512gSSD/30M直连带宽/13个IPv4日本多IP

imidc对日本独立服务器在搞特别促销,原价159美元的机器现在只需要88美元,而且给13个独立IPv4,30Mbps直连带宽,不限制流量。注意,本次促销只有一个链接,有2个不同的优惠码,你用不同的优惠码就对应着不同的配置,价格也不一样。88美元的机器,下单后默认不管就给512G SSD,要指定用HDD那就发工单,如果需要多加一个/28(13个)IPv4,每个月32美元...官方网站:https:...

GreenCloudVPS$20/年多国机房可选,1核@Ryzen 3950x/1GB内存/30GB NVMe/10Gbps端口月流量2TB

GreencloudVPS此次在四个机房都上线10Gbps大带宽VPS,并且全部采用AMD处理器,其中美国芝加哥机房采用Ryzen 3950x处理器,新加坡、荷兰阿姆斯特丹、美国杰克逊维尔机房采用Ryzen 3960x处理器,全部都是RAID-1 NVMe硬盘、DDR4 2666Mhz内存,GreenCloudVPS本次促销的便宜VPS最低仅需20美元/年,支持支付宝、银联和paypal。Gree...

iON Cloud七月促销适合稳定不折腾的用户,云服务器新购半年付8.5折,洛杉矶/圣何塞CN2 GT线路,可选Windows系统

iON Cloud怎么样?iON Cloud今天发布了7月份优惠,使用优惠码:VC4VF8RHFL,新购指定型号VPS半年付或以上可享八五折!iON的云服务器包括美国洛杉矶、美国圣何塞(包含了优化线路、CN2 GIA线路)、新加坡(CN2 GIA线路、PCCW线路、移动CMI线路)这几个机房或者线路可供选择,有Linux和Windows系统之分,整体来说针对中国的优化是非常明显的,机器稳定可靠,比...

数据结构课程设计为你推荐
德国阿尔及利亚怎样评价德国vs阿尔及利亚比赛中的德国队这个任意球配合云仓库管理系统WMS仓库管理系统哪家好?有推荐的吗?裂缝检测关于房屋墙体裂缝要如何检验计算机网络安全试题计算机一、二、三级分别考什么声源定位大家知道有什么办法能快速精确地定位噪声源?声源定位关于大脑皮层,小脑,下丘脑,脑干,脊髓数据挖掘的应用国内基于数据挖掘技术的互联网应用有哪些呢?天津职业大学地址天津职业大学,怎么样,多少分能进去。例外招聘深圳富市康还招工吗是不是只要女孩不要男孩的呢,待遇好吗?csol进不去csol为什么总是进不去
重庆域名注册 域名查询工具 淘宝抢红包攻略 uk2 圣迭戈 网页背景图片 英文站群 京东商城双十一活动 免费mysql ftp教程 静态空间 世界测速 能外链的相册 域名dns 中国电信网络测速 浙江服务器 酸酸乳 中国联通宽带测速 免费php空间 免费网络空间 更多