2022年数据结构教程习题答案李蓉蓉安杨等编著第三版答案 .pdf
《2022年数据结构教程习题答案李蓉蓉安杨等编著第三版答案 .pdf》由会员分享,可在线阅读,更多相关《2022年数据结构教程习题答案李蓉蓉安杨等编著第三版答案 .pdf(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、5.3/*题目:设有三对角矩阵A,将其三对角线上元素逐行存于数组B中求:1:用 i,j 表示 k 的下标变换公式k=2*i+j(下标从 0开始)2:用 k 表示 i,j 的下标公式(下标从 0开始)i=(k+1)/3:(此处取整)j=k-2*i;=k-(k+1)/3*2(此处别化简)什么是三对角矩阵?在线性代数中,一个三对角矩阵是矩阵的一种,它“几乎”是一个对角矩阵。准确来说:一个三对角矩阵的非零系数在主对角线上,或比主对角线低一行的对角线上,或比主对角线高一行的对角线上。例如,下面的是三对角矩阵:1 4 0 0 3 4 1 0 0 2 3 4 0 0 1 3*/*下面是具体的实现*/#inc
2、lude#define size 50/函数的声明void translate(int*b,int asizesize,int n);main()int n;int i,j,k=0;int asizesize;int bsize;printf(输入矩阵的阶数 n);scanf(%d,&n);printf(输入%d 个数据 n,2*(n-1)+(n-1)+1);/2*(n-1)+(n-1)+1 的来历是由上面的公式(2*i+j)推来/三对角矩阵的最后一个元素一定在(n-1,n-1)位置,既然名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 15 页 -/一维组的下标与i,j 有关,那
3、么 k 最大也会在 i=n-1,j=n-1 处/一维数组的下标k 随着 i,j 连续增加的/往三对角矩阵中输入数据while(k2*(n-1)+(n-1)+1)for(i=0;in;i+)for(j=0;jn;j+)if(i=(k+1)/3)&(j=k-(k+1)/3*2)scanf(%d,&aij);k+;else aij=0;printf(你输入的三对角矩是n);for(i=0;in;i+)for(j=0;jn;j+)printf(%d,aij);printf(n);/将三对角矩阵中的元素输入到一位数组b 中translate(b,a,n);printf(压缩后的结果 n);for(i=0
4、;i2*(n-1)+(n-1)+1;i+)printf(%d,bi);printf(n);/进行压缩void translate(int*b,int asizesize,int n)int i,j,k=0;while(k2*(n-1)+(n-1)+1)名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 15 页 -for(i=0;in;i+)for(j=0;jn;j+)if(k=2*i+j&0!=aij)bk+=aij;/*输入矩阵的阶数4 输入 10 个数据1 2 3 4 5 6 7 8 9 3 你输入的三对角矩是1 2 0 0 3 4 5 0 0 6 7 8 0 0 9 3 压缩
5、后的结果1 2 3 4 5 6 7 8 9 3 Press any key to continue*/5.5/*题目:设定二维整数数组B0.m-1,0.n-1的数据在行列上都按从小到大的顺序排序,且整型变量 x 中的数据在 B 中存在。试设计一个算法找出一对满足 Bij=i,j 值,要求比较次数不超过m+n 设计;狼影时间:2012.9.30*/*!下面是自己的看法,若有不对之处(或有更好的方式),请留言本空间,万分感谢既然有序,就要好好利用一下喽,首先想到的就是二分查找,那怎么个二分法呢?我 的 方 法 是 将 二 维 当 做 一 维 用。时 间 复 杂 度 是名师资料总结-精品资料欢迎下载
6、-名师精心整理-第 3 页,共 15 页 -O(log2(m*n)=O(log2m+log2n)O(m+n)*/#include int i=-1,j=-1;/函数声明void print_arry(int a55);void find_x(int a55,int x);main()int x;int a55=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25;print_arry(a);printf(输入要查找的数 n);scanf(%d,&x);/在数组中寻找x find_x(a,x);if(-1=i|-1=j
7、)printf(没有要查找的数据n);else printf(x 的位置是(%d,%d)n,i,j);/输出数组中的内容void print_arry(int a55)int i,j;for(i=0;i5;i+)for(j=0;j5;j+)printf(%2d,aij);printf(n);名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 15 页 -/寻找 x 的位置void find_x(int a55,int x)int mid;int x1=0,y1=24;while(x1a0mid)x1=mid+1;else y1=mid-1;/*1 2 3 4 5 6 7 8 9 10
8、 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 输入要查找的数21 x 的位置是(4,0)Press any key to continue*/5.6/*题目:编写一个算法,计算一个三元组表示的稀疏矩阵的对角线之和设计:狼影时间:2012.9.28*/*名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 15 页 -这里求的是行和列相等的矩阵对角线元素和,如果你会行和列不相等的矩阵对角线元素法,告诉一声啊,万分感激(不用三元组页可以哦!)*/#include#define size 100 typedef struct int x;/存放某
9、一个非零元的行int y;/存放某一个非零元的列int data;/存放某一个非零元DATA;typedef struct int row;/存储矩阵的总行数int col;/存储矩阵的总列数int number;/存储非零元的个数DATA arrysize;/三元组数组NODE;/函数的声明void reduce(int asizesize,NODE*MA,int n);void print_arry(NODE MA);int cal_sum(NODE MA,int n);main()int n;NODE MA;int i,j;int sum=0;int asizesize;printf(输
10、入矩阵的阶数 n);scanf(%d,&n);/对矩阵进行赋值printf(输入矩阵元素 n);for(i=0;in;i+)名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 15 页 -for(j=0;jcol=n;MA-row=n;MA-number=0;for(i=0;in;i+)for(j=0;jarryMA-number.x=i;MA-arryMA-number.y=j;MA-arryMA-number.data=aij;MA-number+;/打印压缩矩阵void print_arry(NODE MA)int i;if(0=MA.number)名师资料总结-精品资料欢迎下
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年数据结构教程习题答案李蓉蓉安杨等编著第三版答案 2022 数据结构 教程 习题 答案 李蓉蓉安杨 编著 第三
限制150内