⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sy4_2.c

📁 数据结构实验与学习指导
💻 C
字号:
/*  sy4_2.c * /
#include"sj.h"
typedef struct QLNode
{ int i,j;
   int e;
   struct QLNode *right,*down;
}QLNode;        /*定义结点,包括行、列、值以及两个指针*/
typedef struct
{ QLNode *rhead[MAXSIZE+1],*chead[MAXSIZE+1];
   int mu,nu,tu;
}CrossList;        /*定义十字链表*/
void CreateSMatrix_OL(CrossList *M)            /*创建矩阵的十字链表存储*/
{
   QLNode *p,*q;
   int m,n,t,k,i,j,kk,e;
   printf("输入矩阵的行列非零元素的个数mu,nu,tu\n");
   scanf("%d,%d,%d",&m,&n,&t);
   M->mu=m; M->nu=n;M->tu=t;
   for(k=1;k<=m;k++)
     M->rhead[k]=NULL;
   for(k=1;k<=n;k++)
     M->chead[k]=NULL;
   for (kk=1;kk<=M->tu;kk++)
    { printf("请输入i,j,v:");
      scanf("%d,%d,%d",&i,&j,&e);            /*输入矩阵的值*/
      p=(QLNode* )malloc(sizeof(QLNode));    /*创建十字链表*/
      p->i=i;p->j=j;p->e=e;
      p->right=p->down=NULL;
     if(M->rhead[i]==NULL) M->rhead[i]=p;
       else{
        q=M->rhead[i];
        while((q->right!=NULL)&&(q->right->j<j))
          q=q->right;
        p->right=q->right;q->right=p;
      }/* else */
     if(M->chead[j]==NULL) M->chead[j]=p;
     else{
        q=M->chead[j];
        while((q->down)&&(q->down->i<i))
           q=q->down;
        p->down=q->down;q->down=p;
       }/* else */
   }/*for*/
}/* CreateSMatrix_OL*/
void  printCR1(CrossList *M) {    /*行优先方式输出*/
   int i;          QLNode *p;
   for(i=1;i<=M->mu;i++)
    {
      p=M->rhead[i];
      while(p!=NULL)                /*输出矩阵的值*/
       { printf("   %d  %d  %d",p->i,p->j,p->e);
        p=p->right; }
        printf("  NULL\n");
    }
}/* printCR1*/
void  printCR2(CrossList *M) {    /*列优先方式输出*/
   int i;          QLNode *p;
   for(i=1;i<=M->nu;i++)
    {
      p=M->chead[i];
      while(p!=NULL)                /*输出矩阵的值*/
       { printf("    %d  %d  %d",p->i,p->j,p->e);
        p=p->down; }
        printf("  NULL\n");
     }
}/* printCR2*/
void main()
{ CrossList *M=(CrossList*)malloc(sizeof(CrossList));
   int i;
   QLNode *p;
   CreateSMatrix_OL(M);
   printf("行优先输出:\n");
   printCR1(M);
   printf("列优先输出:\n");
   printCR2(M);
   getch();
}  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -