zoukankan      html  css  js  c++  java
  • 稀疏矩阵十字链表存储表示

    #include <iostream>
    using namespace std;
    
    #define OK 1
    #define ERROR 0
    
    typedef int ElemType;
    typedef int Status;
    
    typedef struct OLNode {
        int i, j;
        ElemType e;
        struct OLNode *right, *down;    //该非零元所在行表和列表的后继链域
    }OLNode, * OLink;
    
    typedef struct {
        OLink *rhead, *chead;    //行和列链表头指针向量基址由CreateSMatrix分配
        int mu, nu, tu;
    }CrossList;
    
    Status CreateSMatrix_OL(CrossList &M)
    {
        int m, n, t, i, j, e;
        OLNode *p, *q;
        printf("input row 、col、total num:
    ");
        scanf("%d%d%d",&m, &n, &t);
        M.mu = m; M.nu = n; M.tu = t;
        if (!(M.rhead = (OLink *)malloc((m + 1)*sizeof(OLink)))) 
            return ERROR;
        if (!(M.chead = (OLink *)malloc((n + 1)*sizeof(OLink))))
            return ERROR;
        
        for ( i = 0; i <= m; ++i)
            M.rhead[i] = NULL;
        for ( i = 0; i <= n; ++i)
            M.chead[i] = NULL;
        for (scanf("%d%d%d", &i, &j, &e); i != 0; scanf("%d%d%d", &i, &j, &e))
        {
            if (!(p = (OLNode *)malloc(sizeof(OLNode))))
                return ERROR;
            p->i = i; p->j = j; p->e = e;
            if (M.rhead[i] == NULL||M.rhead[i]->j > j)
            {
                p->right = M.rhead[i];
                M.rhead[i] = p;
            }
            else {        //寻查在行表中的插入位置
                for (q = M.rhead[i]; (q->right) && q->right->j < j; q = q->right);
                p->right = q->right;
                q->right = p;
            }            //完成行插入
            if (M.chead[j] == NULL||M.chead[j]->i > i)
            {
                p->down = M.chead[j];
                M.chead[j] = p;
            }
            else {        //寻查在列表中的插入位置
                for (q = M.chead[j];(q->down) && q->down->i < i; q = q->down);
                p->down = q->down;
                q->down = p;
            }            //完成列插入
        }
        return OK;
    }
        
  • 相关阅读:
    探讨e.target与e.currentTarget
    JavaScript事件模型
    博客
    angular创建自定义指令的四种方式
    jqueryMobile模块整理—图标(icons)
    jqueryMobile模块整理—按钮(buttons)
    Visio 2010,如何打开多个窗口
    Ajax.ActionLink浏览器中代码解析问题
    响应式布局
    jquery的each
  • 原文地址:https://www.cnblogs.com/gjfhopeful/p/3621110.html
Copyright © 2011-2022 走看看