| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 45809 人关注过本帖
标题:每日灌水~
只看楼主 加入收藏
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
宜~拒绝~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-11-18 10:40
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
收藏
得分:0 
滴~特仑苏~

早知做人那么辛苦!  当初不应该下凡
2017-11-18 23:31
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
宜~思考人生~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-11-19 12:02
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
宜~头脑风暴~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-11-20 09:03
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
宜~享受~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-11-21 08:11
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
宜~立盟约~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-11-22 07:43
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
暂存上机代码,嗯,看来代码格式还可以美观一点~

程序代码:


//   稀疏矩阵的十字链表存储与输出。
#include <stdio.h>
#include <stdlib.h>
#define MaxRow    10
#define MaxCol    10


typedef int Etype;
typedef struct OLnode  {
    int i,j;                                  /* 行号、列号域 */
    Etype e;                                  /*  数据域      */
    struct OLnode *right,*down;       /* 行向的、列向的指针域 */
} OLnode;                            /* 数据元素结点类型  */

typedef struct { 
    OLnode *rh[MaxRow],*ch[MaxCol];
    int mu,nu,tu;
}Crosslist;                       /* 十字链表行、列表头  */

/* 函数声明 */
void creatMatrix(Crosslist *M);
void out_M(Crosslist M);
void TransMatrix(Crosslist *a , Crosslist *b);

Crosslist ma,mb,mc; int z;

/*  主函数 */
int main(){ 

    creatMatrix(&ma);
    printf("\n     【创建的十字链接矩阵如下】\n");
    out_M(ma);
    TransMatrix(&ma , &mb);
    out_M(mb);

    TransMatrix(&mb,&mc);
    out_M(mc);

    return 0;
}  /* main */


/* 十字链表的输出  */
void out_M(Crosslist M) { 
    int i; OLnode *p; //char ch;
   /*  输出矩阵的总行数、总列数、非零元素总个数 */
    printf("\n矩阵行数m=%d    列数n=%d   非0元素个数t=%d \n",M.mu,M.nu,M.tu);
    for(i=1; i<=M.mu; i++) { 
        p=M.rh[i];         /*  指向第i行 */
        printf("  i=%d",i);
        if(p){ 
            while(p){ 
                printf("  (%3d%3d%4d) ",p->i,p->j,p->e);
                p=p->right;
            }
        }
        printf("\n");
    }
}


/* 创建十字链表      */
void creatMatrix(Crosslist *M) { 
    int m,n,t,row,col,i,j;
    Etype va;  OLnode *p,*q,*s;
    
    /*  输入矩阵的总行数、总列数、非零元素总个数 */
    printf("\n  矩阵行数m,列数n,非零元素个数t(逗号隔开)=?");
    scanf("%d,%d,%d",&m,&n,&t);
    for(i=1; i<=m;i++) M->rh[i]=NULL;
    for(j=1; j<=n;j++) M->ch[j]=NULL;
    M->mu=m; M->nu=n; M->tu=t;   /*  建立成空十字链表  */
    
    /* 以下为非零元素的逐一输入和插入 */
    for(i=1;i<=M->tu;i++)
    { 
        printf(" (0行列放弃,下标从1开始) 行号i,列号j,值e(逗号隔开)=?");
        scanf("%d,%d,%d",&row,&col,&va);
        p=(OLnode *)malloc(sizeof(OLnode));

        p->i=row;
        p->j=col;
        p->e=va;
        
        /*  在第row行上链接 */
        q=M->rh[row];
        s=q;
        while(q!=NULL && q->j < col)
        { 
            s=q; 
            q=q->right;
        }
        p->right=q;
        if(q==M->rh[row])  
            M->rh[row]=p; 
        else 
            s->right=p;

        /* 在第col列上链接    */
        q=M->ch[col];
        while(q && q->i  < row) 
        {
            s=q;
            q=q->down;
        }

        p->down=q;
        if(q==M->ch[col])
            M->ch[col]=p; 
        else 
            s->down=p;
    } /* for */
}/* creatMatrix */ 


void TransMatrix(Crosslist *a , Crosslist *b)
{
    size_t i=0;
    OLnode* p=NULL;
    OLnode* q=NULL;
    OLnode* next=NULL;
    OLnode* row[MaxRow];

    b->mu=a->nu;
    b->nu=a->mu;
    b->tu=a->tu;

    for (i=1;i<=b->mu;++i)
    {
        b->ch[i]=NULL;
        row[i]=NULL;
    }
    
    for (i=0;i<=b->nu;++i)
        b->rh[i]=NULL;

    for (i=1;i<=a->mu;++i)
    {
    if ((q=a->rh[i])==NULL)
        continue;
    
    next=b->ch[i];
    
    while (q!=NULL)
    {
        int pMark=0;

        p=(OLnode* )malloc(sizeof(OLnode));

        if (p==NULL)
                exit(0);

            p->i=q->j;
            p->j=q->i;
            p->e=q->e;
            p->right=NULL;

        if (next!=NULL)
        next->down=p;
        else
        b->ch[i]=p;

        pMark=p->i;
        if (row[pMark]!=NULL)
        row[pMark]->right=p;
        else
        b->rh[pMark]=p;

        next=p;
        row[pMark]=p;
        p=p->down;
        q=q->right;
    }
    
    next->down=NULL;
    }
}




[此贴子已经被作者于2017-11-22 22:49编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-11-22 17:53
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
宜~口直心快~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-11-23 08:08
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
宜~装神秘~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-11-24 09:25
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
宜~口直心快~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-11-25 08:20
快速回复:每日灌水~
数据加载中...
 
   



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

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