| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 286 人关注过本帖
标题:稀疏矩阵链表存储结构并实现加法问题,求助!!!!
只看楼主 加入收藏
二两月光
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2012-10-17
结帖率:0
收藏
已结贴  问题点数:10 回复次数:6 
稀疏矩阵链表存储结构并实现加法问题,求助!!!!
#include<iostream>
#include<vector>
#define M 100

using namespace std;

struct Node
{
    int col,val;
    struct Node *next;
};
typedef Node *node;
vector<node> Input(int r,int c)
{
    node N;
    int a[M][M];
    int i,j;
    for(i=0;i<r;i++)
        for(j=0;j<c;j++)
            cin>>a[i][j];
    /*cout<<"矩阵为:"<<endl;
    for(i=0;i<r;i++)
    {
        for(j=0;j<c;j++)
            cout<<a[i][j]<<" ";
        cout<<endl;
    }*/
    vector<node>v;
    node head, p;
   
   
    for(i=0;i<r;i++)
    {
        head=(node)malloc(sizeof(Node));
        p=head;
        for(j=0;j<c;j++)
        {
            if(a[i][j]!=0)
            {
                N=(node)malloc(sizeof(Node));
                N->col=j;
                N->val=a[i][j];
                p->next=N;
                p=N;
            }
            
        }
            p->next=NULL;
            
            v.push_back(head);
    }
    return v;



}
vector<node> Add(vector<node>N1,vector<node>N2,int r,int c)
{
    int i,j;
    node p,head,p1,p2;
    node N;
    vector<node>v;
   
    for(i=0;i<N1.size();i++)
    {
        head=(node)malloc(sizeof(Node));
        p=head;
        p1=N1[i]->next;
        p2=N2[i]->next;
        for(j=0;j<c;j++)
        {
            
            
              if(p1->col==j&&p2->col!=j||p2==NULL)
            {
                N=(node)malloc(sizeof(Node));
                N->val=p1->val;
                N->col=p1->col;
                p->next=N;
                p=N;
            
                p1=p1->next;
               
            }
              if(p2->col==j&&p2->col!=j||p2==NULL)
            {
                N=(node)malloc(sizeof(Node));
                N->val=p2->val;
                N->col=p2->col;
                p->next=N;
                p=N;
               
                p2=p2->next;
               
            }
             if(p1->col==j&&p2->col==j)
            {
                N=(node)malloc(sizeof(Node));
                N->col=p1->col;
                N->val=p1->val+p2->val;
                p1=p1->next;
                p2=p2->next;
                p->next=N;
                p=N;
            }
             if(p1==NULL&&p2==NULL)
                 break;
   
            
        }
        p->next=NULL;
            v.push_back(head);   
    }return v;
}
int Output(vector<node> N3)
{
    int i,m,n=0;node p;
    for(i=0;i<N3.size();i++)
    {
        p=N3[i];p=p->next;
        while(p!=NULL)
        {
            
            for(m=n+1;m<p->col;m++)
                cout<<0<<" ";
            cout<<p->val<<" ";
            n=p->col;
            p=p->next;
        }
        cout<<"\n";
    }
    return 0;
}
int main()
{
    vector<node>N1;
    vector<node>N2;
    vector<node>N3;
    int r;
    int c;
    node p;
    cout<<"请输入矩阵的行列数:";
    cin>>r>>c;
    cout<<"请输入矩阵1:"<<endl;
    N1=Input(r,c);
   
    cout<<"请输入矩阵2:"<<endl;
    N2=Input(r,c);
    N3=Add(N1,N2,r,c);
    Output(N3);

   
   
   
    system("pause");
    return 0;
}
   






只有矩阵每行首位和末位不为0的时候才能运行,求大神调试啊
搜索更多相关主题的帖子: include 
2012-12-09 22:19
二两月光
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2012-10-17
收藏
得分:0 
求大神关注啊。。
2012-12-09 22:22
不玩虚的
Rank: 9Rank: 9Rank: 9
来 自:四川
等 级:贵宾
威 望:10
帖 子:331
专家分:1301
注 册:2012-12-9
收藏
得分:5 
vector<node>N1;向量定义变量表示没有用过,好神奇

同学习......同进步....你帮我......我帮你.....上善若水.....
2012-12-09 22:58
二两月光
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2012-10-17
收藏
得分:0 
回复 3楼 不玩虚的
自己慢慢摸索出来的,挺好用
2012-12-10 11:33
二两月光
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2012-10-17
收藏
得分:0 
求关注
2012-12-10 11:33
青春无限
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江苏
等 级:贵宾
威 望:24
帖 子:3452
专家分:19340
注 册:2012-3-31
收藏
得分:5 
关注

学 会看代码…学习写程序…学会搞开发…我的目标!呵呵是不是说大话啊!!一切皆可能
2012-12-10 11:42
二两月光
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2012-10-17
收藏
得分:0 
回复 6楼 青春无限
谢谢啊!!
2012-12-10 11:46
快速回复:稀疏矩阵链表存储结构并实现加法问题,求助!!!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018073 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved