24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 866  |  回复: 1

lelemaoer

金虫 (初入文坛)

[求助] 请教《数据结构》,建立稀疏矩阵的十字链表算法。

#include
#include

typedef int ElementType;
typedef struct OLNode /*十字链表的结构类型定义如下:*/
{
        int row,col; /*非零元素的行和列下标*/
        ElementType value;
        struct OLNode *right,*down; /*非零元素所在行表、列表的后继链域*/
}OLNode,*OLink;

typedef struct
{
        OLink *row_head,*col_head; /*行、列链表的头指针向量*/
        int m,n,len; /*稀疏矩阵的行数、列数、非零元素的个数*/
}CrossList;


void CreateCrossList(CrossList *M)
{
        int m,n,t;
        OLNode *p,*q;
        int i,j,e,k;

        printf("输入M的行数,列数,和非零元的个数:"; /*采用十字链表存储结构,创建稀疏矩阵M*/
        scanf("%d,%d,%d",&m,&n,&t); /*输入M的行数,列数和非零元素的个数*/
        M->m=m;
        M->n=n;
        M->len=t;
        if( !(M->row_head=(OLink*)malloc( (m+1)*sizeof(OLink)) ))
                printf("error";
        if( !(M->col_head=(OLink *)malloc( (n+1)*sizeof(OLink)) ))
                printf("error";

        for(k=1;k<=m;k++)
                M->row_head[k]=NULL;
        for(k=1;k<=n;k++)
                M->col_head[k]=NULL; /*初始化行、列头指针向量,各行、列链表为空的链表*/
               
        printf("输入各非零元素行,列和值,逗号隔开!\n";
        for( scanf("%d,%d,%d",&i,&j,&e);i!=0;scanf("%d,%d,%d",&i,&j,&e) )
        {
                if( !(p=(OLNode *)malloc(sizeof(OLNode))) )
                        printf("error";
                p->row=i;
                p->col=j;
                p->value=e;

                if(M->row_head==NULL) /*生成结点*/
                        M->row_head=p;
                else /*寻找行表中的插入位置*/
                {
                        for(q=M->row_head; q->right&&q->right->colright); /*空循环体*/
                        p->right=q->right;
                        q->right=p; /*完成插入*/
                }

                if(M->col_head[j]==NULL)
                        M->col_head[j]=p;
                else /*寻找列表中的插入位置*/
                {
                        for(q=M->col_head[j]; q->down&&q->down->rowdown); /*空循环体*/
                        p->down=q->down;
                        q->down=p; /*完成插入*/
                }
        }
}


main()
{
        CrossList M;
        CreateCrossList(&M);
}
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yalefield

金虫 (文坛精英)

老汉一枚

2楼2012-07-10 15:22:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 lelemaoer 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 08工科275分求调剂 +14 AaAa7420 2026-03-31 14/700 2026-04-03 11:13 by cocolv
[考研] 化工调剂303分,过四级 +25 栖梧待风 2026-04-02 25/1250 2026-04-03 10:22 by 哦哦嗯哈
[考研] 334求调剂 +5 曾仰之 2026-04-03 5/250 2026-04-03 10:13 by jp9609
[考研] 求调剂22408 288分 +5 new382 2026-04-02 5/250 2026-04-03 09:13 by 醉在风里
[考研] 求调剂 +5 朔朔话 2026-04-02 6/300 2026-04-02 22:02 by barlinike
[考研] 296求调剂 +4 sdhu 2026-04-02 4/200 2026-04-02 21:29 by baoball
[考研] 085602 找调剂 +3 逆时针快乐 2026-04-02 3/150 2026-04-02 21:23 by dongzh2009
[考研] 081200-11408-276学硕求调剂 +3 崔wj 2026-04-02 3/150 2026-04-02 15:06 by cal0306
[考研] 0856初试324分求调剂 +6 想上学求调 2026-04-01 6/300 2026-04-02 11:42 by 星空星月
[考研] 266分,一志愿电气工程,本科材料,求材料专业调剂 +10 哇呼哼呼哼 2026-04-01 11/550 2026-04-02 11:31 by lnilvy
[考研] 求调剂,一志愿 南京航空航天大学 ,080500材料科学与工程学硕,总分289分 +11 @taotao 2026-03-29 11/550 2026-04-02 10:04 by realme321
[考研] 土木304求调剂 +6 兔突突突, 2026-03-31 7/350 2026-04-02 09:06 by coolminer
[考研] 295材料工程专硕求调剂 +19 1428151015 2026-03-27 19/950 2026-04-01 22:34 by peike
[考研] 332求调剂 +8 Lyy930824@ 2026-03-29 8/400 2026-04-01 18:40 by 千钧澄玉宇啊
[考研] 085600,321分求调剂 +13 大馋小子 2026-03-31 13/650 2026-04-01 12:35 by chemdavid
[考研] 339求调剂 +5 zjjkt 2026-03-31 5/250 2026-04-01 09:18 by JourneyLucky
[考研] 求化学调剂 +12 wulanna 2026-03-28 12/600 2026-03-31 16:38 by 690616278
[考研] 313求调剂 +6 卖个关子吧 2026-03-31 6/300 2026-03-31 10:58 by Jaylen.
[考研] 福建理工大学材料学院先进合金团队招收考研调剂学生 +3 大华金商都 2026-03-30 4/200 2026-03-31 01:04 by 方英俊602
[考研] 086000生物与医药调剂 +5 Feisty。 2026-03-28 9/450 2026-03-29 12:02 by longlotian
信息提示
请填处理意见