c/c++高手请进)程序设计:稀疏矩阵的完全链表表示及其运算的

来源:百度知道 编辑:UC知道 时间:2024/05/28 10:48:59
c/c++高手请进)程序设计:稀疏矩阵的完全链表表示及其运算的

注:紧急求助此问题的完整c/c++源代码!请发送到邮箱:madapeng250@163.com
收到确信无误后即可给与加分,并且 补加100分!!!请一定发送到邮箱否则不予加分.........谢谢先啦!

稀疏矩阵的每个结点包含down,right,row,col和value五个域。用单独一个结点表示一个非零项,并将所有结点连接在一起,形成两个循环链表。使得第一个表即行表,把所有结点按照行序(同一行内按列序)用right域链接起来。使得第二个表即列表,把所有结点按照列序(同一列内按行序)用down链接起来。这两个表共用一个头结点。另外,增加一个包含矩阵维数的结点。稀疏矩阵的这种存储表示称为完全链表表式。

实现一个完全链表系统进行稀疏矩阵运算,并分析下列操作函数的计算时间和额外存储空间的开销。

认识和掌握稀疏矩阵的完全链表表示;能够建立并运用这种存储结构

建立一个用户友好、菜单式系统进行下列操作,并使用合当的测试数据测试该系统。

(a) 读取一个稀疏矩阵建立其完全链表表示

(b) 输出一个稀疏矩阵的内容

(c) 删除一个稀疏矩阵

(d) 两个稀疏矩阵相加

(e) 两个稀疏矩阵相减

(f) 两个稀疏矩阵相乘

(g) 稀疏矩阵的转置

链表上的操作。
此题已经在其他编程语言中悬赏150分!请大家积极回答~!谢谢先乐!

#include<stdio.h>
#include<stdlib.h>
#include<iostream.h>
#include<process.h>
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int ElemType;

struct OLNode
{
int i,j; //非零元所在行、列
ElemType e;//非零元值
OLNode *right,*down;
};
typedef OLNode *OLink;
struct CrossList
{
OLink *rhead,*chead;//行、列表头的头节点
int mu,nu,tu;//矩阵的行、列和非零元个数
};

int Create(CrossList &M)
{
int i,j,k,m,n,t;
ElemType e;
OLNode *p,*q;
printf("请输入稀疏距阵的行数 列数 非零元的个数:");
scanf("%d%d%d",&m,&n,&t);
M.mu=m;
M.nu=n;
M.tu=t;
M.rhead=(OLink*)malloc((m+1)*sizeof(OLink));
if(!M.rhead)
exit(OVERFLOW);
M.chead=(OLink*)malloc((n+1)*sizeof(OLink));
if(!M.chead)
exit(OVERFLOW);
for(k=0;k!=m;k++)//初始化行头指针
M.rhead[k]=NULL;
for(k=0;k!=n;k++)//初始化列头指针
M.chead[k]=NULL