- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
课程设计
所抽题目: 采用十字链表表示稀疏矩阵,并实现矩阵的加法运算。
要求:要检查有关运算的条件,并对错误的条件产生报警。
问题分析和建立模型:本题目主要是运用所学知识,用十字链表的方法去表示稀疏矩阵,并使之可以在两矩阵间进行相加。而后,若有错误,则对错误进行警报。
框架搭建:
1选择File|New菜单项,弹出New对话框,选择Files标签,选中C++ Source File项,在File编辑器中输入项目名称“十字链表表示稀疏矩阵实现加法”,在Location编辑框中输入项目所在目录,按下OK按钮即可。
2在操作界面中输入,程序代码。
结构体和共用体的定义
#includestdio.h
#includemalloc.h
#define smax 45
typedef int datatype;
typedef struct lnode
建立稀疏矩阵的函数,返回十字链表头指针
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;i=s;i++)
插入结点函数
p=(link *)malloc(sizeof(link));
p-i=0;p-j=0;
p-rptr=p;p-cptr=p;
cp[i]=p; cp[i-1]-uval.next=p;
}
cp[s]-uval.next=head;
for(k=1;k=t;k++)
{
printf(\t 第%d个元素(行号i 列号j 值v,数字间用空格分隔):,k);
scanf(%d%d%d,i,j,v);
p=(link *)malloc(sizeof(link));
p-i=i;p-j=j;p-uval.v=v;
q=cp[i];
while((q-rptr!=cp[i])(q-rptr-jj))
q=q-rptr;
p-rptr=q-rptr;
q-rptr=p;
q=cp[j];
while((q-cptr!=cp[j])(q-cptr-ii))
q=q-cptr;
p-cptr=q-cptr;
q-cptr=p;
}
return head;
输出十字链表的函数
link *p,*q;
p=(link *)malloc(sizeof(link));
p-i=i;p-j=j;p-uval.v=v;
q=cp[i];
while((q-rptr!=cp[i])(q-rptr-jj))
q=q-rptr;
p-rptr=q-rptr;
q-rptr=p;
q=cp[j];
while((q-cptr!=cp[j])(q-cptr-ii))
q=q-cptr ;
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(k=1;kq-j-(r-j);k++)
printf( 0);
printf(%3d,q-uval.v);
q=q-rptr;
r=r-rptr;
}
k=r-j;
for(t=k;tcol;t++)
printf( 0);
printf(\n);
p=p-uval.next;
}
}
link *add(link *a,link *b)
{
link *p,*q,*u,*v,*r,*cp[smax],*c;
int s,i;
if(a-i!=b-i||a-j!=b-j)
{ flag=1;return NULL; }
建立相加矩阵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;
cp[0]=c;
for(i=1;i=s;i++)
{
r=(link *)malloc(sizeof(
您可能关注的文档
- 2015优护实施方案修改版.docx
- 2016 年度河北省医师定期考核试题答案.docx
- 2016.1.16护士执业上.docx
- 2016.1.18护士执业下.docx
- 2016.1.19护士执业上.docx
- 2016.2.19护士执业下.docx
- 2016.2.22护士执业下.docx
- 2016.2.29护士执业上.docx
- 2016.3.2护士执业上.docx
- 2016.2.23护士执业下.docx
- 专题06 经济体制(我国的社会主义市场经济体制)-五年(2020-2024)高考政治真题分类汇编(解析版).docx
- 专题11 世界多极化与经济全球化-5年(2020-2024)高考1年模拟政治真题分类汇编(解析版).docx
- 专题03 经济发展与社会进步-5年(2020-2024)高考1年模拟政治真题分类汇编(浙江专用)(解析版).docx
- 专题09 文化传承与文化创新-5年(2020-2024)高考1年模拟政治真题分类汇编(北京专用)(原卷版).docx
- 5年(2020-2024)高考政治真题分类汇编专题08 社会进步(我国的个人收入分配与社会保障)(原卷版).docx
- 专题07 探索世界与把握规律-5年(2020-2024)高考1年模拟政治真题分类汇编(解析版).docx
- 5年(2020-2024)高考政治真题分类汇编专题06 经济体制(我国的社会主义市场经济体制)(原卷版).docx
- 专题11 全面依法治国(治国理政的基本方式、法治中国建设、全面推进依法治国的基本要求)-五年(2020-2024)高考政治真题分类汇编(解析版).docx
- 专题17 区域联系与区域协调发展-【好题汇编】十年(2015-2024)高考地理真题分类汇编(解析版).docx
- 专题01 中国特色社会主义-5年(2020-2024)高考1年模拟政治真题分类汇编(原卷版).docx
文档评论(0)