数据结构-C语言版:三元组例题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

E[1..max]
m
n t (a) tl的存储结构
i jv (b) tl中第k个元素tl.e[k]
算法transpose是用类程序设计语言描述的一种稀疏矩阵转置
算法,即将三元组表tl1转置后放入三元组表tl2中。该算法通过
统计每列的非零元素的个数从而直接确定转置后的每行的第一 个非零元素存储位置。
类程序设计语言描述形式:符号&开头的参数为输入/输出参 数。算法中,“←”为赋值号。
6)执行算法,当
时,所有循环
(4);
一次也不执行。
cpos[col]← cpos[col]+1; 7)上述算法中共有4个for循环,将非零元
}
素的行号、列号交换并放入转置后矩阵的对
}
应位置的操作是在第
个for循环中
}
实现的。
参考答案
(1) tl2.t←tl1.t (2) num[tl1.e[t].j]+1 (3) cpos[1]←1 (4) tl2.e[q].v←tl1.e[p].v; (5) 顺序 (6) 非零元素个数为0(或tl2.t=0) (7) 4
if tl2.t<>0 then
第i行)非零元素的待插入位置//
{ for col←1 to tl1.n do
//col,t,p,q均为整型//
num[col]←0;
for t←1 to tl1.t do
num[tl1.e[t].j]←
(2) ;
(3)//置非零元素待插位置初始值//
for col←2 to tl1.n do
Algorithm transpose(tl1,&tl2) //tl1,tl2为三元组,tl2为转置后的三元组//
{ tl2.m←tl1.n;
// num为一维数组,num[i]表示的是tl1第i列(tl2
tl2.n←tl1.m;
第i行)非零元素的个数//
(1);
// cpos为一维数组,cpos[i]表示的是tl1第i列(tl2
cpos[col]← cpos[col-1]+number[col-1] ;
for p←1 to tl1.t do
{ col←tl1.e[p组表示法表示的稀疏矩阵采用的存
tl2.e[q].i←tl1.e[p].j;
储结构为
(顺序、链式)结构。
tl2.e[q].j←tl1.e[p].i;
三元组例题
三元组表tl是稀疏矩阵的存储结构,如图所示。tl.e[1..max] 是三元组表tl的元素域,为一维数组,非零元素以行为主序顺 序排列。tl.m、tl.n和tl.t分别表示稀疏矩阵的行数、列数和非零 元素的个数,如图(a)所示,元素域tl.e中每个结点包含三个 域,即行下表i、列下表j和值v,如图(b)所示。tl.e中第k个元 素(结点)的行、列和值分别用tl.e[k].i、tl.e[k].j和tl.e[k].v表示。
相关文档
最新文档