下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 课程设计所抽题目: 采用十字链表表示稀疏矩阵,并实现矩阵的加法运算。要求:要检查有关运算的条件,并对错误的条件产生报警。问题分析和建立模型:本题目主要是运用所学知识,用十字链表的方法去表示稀疏矩阵,并使之可以在两矩阵间进行相加。而后,若有错误,则对错误进行警报。框架搭建:1选择File|New菜单项,弹出New对话框,选择Files标签,选中C+ Source File项,在File编辑器中输入项目名称“十字链表表示稀疏矩阵实现加法”,在Location编辑框中输入项目所在目录,按下OK按钮即可。2在操作界面中输入,程序代码。(1) 结构体和共用体的定义#include#include#de
2、fine smax 45typedef int datatype;typedef struct lnode(2) 建立稀疏矩阵的函数,返回十字链表头指针int i,j; struct lnode *cptr,*rptr; union struct lnode *next; datatype v; uval;link;int flag=0;建立十字链表头结点head=(link *)malloc(sizeof(link);建立头结点循环链表for(i=1;ii=0;p-j=0; p-rptr=p;p-cptr=p; cpi=p; cpi-1-uval.next=p; cps-uval.next=
3、head; for(k=1;ki=i;p-j=j;p-uval.v=v; q=cpi; while(q-rptr!=cpi)&(q-rptr-jrptr; p-rptr=q-rptr; q-rptr=p; q=cpj; while(q-cptr!=cpj)&(q-cptr-icptr; p-cptr=q-cptr; q-cptr=p; return head;(4) 输出十字链表的函数link *p,*q; p=(link *)malloc(sizeof(link); p-i=i;p-j=j;p-uval.v=v; q=cpi; while(q-rptr!=cpi)&(q-rptr-jrptr
4、; p-rptr=q-rptr; q-rptr=p; q=cpj; while(q-cptr!=cpj)&(q-cptr-icptr ; p-cptr=q-cptr; q-cptr=p;(5)定义两个矩阵的非零元素,及两个矩阵的行和列数。然后输入非零元素。将两个用十字链表表示的稀疏矩阵显示出来。void print(link *a) link *p,*q,*r; int k,col,t,row; col=a-j; printf(矩阵为:n); p=a-uval.next; while(p!=a) q=p-rptr; if(q=a-cptr)break; r=p; while(q!=p) for
5、(k=1;kj-(r-j);k+) printf( 0); printf(%3d,q-uval.v); q=q-rptr; r=r-rptr; k=r-j; for(t=k;tuval.next; link *add(link *a,link *b) link *p,*q,*u,*v,*r,*cpsmax,*c; int s,i; if(a-i!=b-i|a-j!=b-j) flag=1;return NULL; (5) 建立相加矩阵c的表头环链c=(link *)malloc(sizeof(link); c-i=a-i;c-j=a-j; if(c-ic-j)s=c-i; else s=c-j
6、; cp0=c; for(i=1;ii=0;r-j=0; r-rptr=r;r-cptr=r; cpi=r; cpi-1-uval.next=r; cps-uval.next =c;考虑复杂问题,实现矩阵相加。p=a-uval.next;u=b-uval.next; while(p!=a&u!=b) q=p-rptr;v=u-rptr; if(q=p&v!=u) while(v!=u) insert(v-i,v-j,v-uval.v,cp);v=v-rptr; else if(v=u&q!=p) while(q!=p) insert(q-i,q-j,q-uval.v,cp);q=q-rptr;
7、 else if(q!=p&v!=u) while(q!=p&v!=u) if(q-jj) insert(q-i,q-j,q-uval.v,cp);q=q-rptr; else if(q-jv-j) insert(v-i,v-j,v-uval.v,cp);v=v-rptr; else if(q-uval.v+v-uval.v!=0)insert(q-i,q-j,(q-uval.v+v-uval.v),cp); q=q-rptr;v=v-rptr; if(q=p&v!=u) while(v!=u) insert(v-i,v-j,v-uval.v,cp);v=v-rptr; else if(v=u&q!=p) while(q!=p) insert(q-i,q-j,q-uval.v,cp);q=q-rptr; else; else ; p=p-uval.next;u=u-uval.next; return c;(6) 编写主函数void main() link *a,*b,*c; a=creatlinkmat();print(a); b=creatlinkmat();print(b); c=add(a,b); if(flag=1)printf(矩阵a、b不能相加!); else
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 轴承制造工操作模拟考核试卷含答案
- 铸就施工安全堡垒-打造零事故施工现场
- 医院医疗质量安全控制制度
- 2024-2025学年广东省东莞市东城区八年级(下)期中数学试卷及答案
- 《公差选用与零件测量》课件-2.1.4几何公差规范的组成、公差框格
- 工程奇思妙想-创新设计在工程学中的应用
- 2020滕州初中语文面试在职备考高效刷题题库及答案
- 2020锦泰保险校招笔试70分必刷题库带答案解析
- 2026远程中医服务课件
- 2026六年级数学上册 求一个数比另一个数少百分之几
- (高清版)DZT 0208-2020 矿产地质勘查规范 金属砂矿类
- 预制空心板梁吊装施工方案
- 社会调查与研究方法课件
- 平安中国建设基本知识讲座
- 呆滞物料管理规定
- 2023年安徽省淮南市招聘专职消防员37人笔试参考题库(共500题)答案详解版
- AB-PLC-5000-编程基础指令例说明
- 氯碱企业涉氯安全风险隐患排查指南(试行)
- 港口与航道工程管理与实务
- 内蒙古自治区级储备粮油轮换管理办法
- 2023年呼和浩特市回民区政务中心综合窗口人员招聘笔试题库及答案解析
评论
0/150
提交评论