首页 > 代码库 > 数据结构之十字链表

数据结构之十字链表

    #define MAXSIZE 100
   #define ERROR 1
   #define OK 0

 

  typedef struct{

         int a;
         char s;
    }ElemType;
 
   typedef struct{
        ElemType e;
        int i,j;
        Node *rigth;
        Node *down;
      }Node,*PointNode;


    typedef struct{
        PointNode *C;
        PointNode *R;
        int mu,nu,tu;
      }Ta;


    int init_table(Ta &H){
          int mu,nu,tu;
          scanf("please input the table: mu,nu",mu,nu);
          if(!H.C=(PointNode*)malloc((nu+1)sizeof(PointNode))) return ERROR;
          if(!H.R=(PointNode*)malloc((mu+1)sizeof(PointNode))) return ERROR;
          H.tu=0;
          H.mu=mu;
          H.nu=nu;
          H.C[]=H.R[]=NULL;
          return OK;
      }


    int insert_table(Ta &H){
           int i,j;
           ElemType e;
           PointNode p=NULL,q=NULL;
           scanf("please input : i, j, e",i,j,e);
           if(i<0||j<0) return ERROR;
           if(q=(PointNode)malloc(sizeof(Node))) return ERROR;
            q->i=i;
            q->j=j;
            q->e=e;
            p=H.R[i];
           if(p==NULL||p->j>j){
               q->right=p;
               p=q;    
             }
           else{
                  for(;p->right&&p->right-j<j;p=p->right){
                       q->right=p->right;
                       p->right=q;
                    }
            }
           p=T.C[j];
           if(p==NULL||p->i>i){
              q->down=p;
              p=q;
            }
           else{
              for(;p->down&&p->down-i<i;p=p->down){
                    q->down=p->down;
                    p->down=q;
                }
             return OK;
           }
         }

数据结构之十字链表