论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > C语言程序设计教程
Tag:新手,函数,指针,数据类型,对象,Turbo,入门,运算符,数组,结构,二级,,tc,游戏,试题,问答,编译,视频教程

输入矩阵的非邻元素建立十字链表并按行方式打印该十字链表的完整程序

文章类别:C语言程序设计 | 发表日期:2008-9-24 14:45:29

/*   输入矩阵的非领元素建立十字链表并按行方式打印该十字链表的完整程序   */
struct matnode                             /* 十字链表结点的定义 */
{
  int row,col;
  struct matnode *right,*down;
     union  {
 int val;
 struct matnode *next;
     }tag;
};
struct matnode *createmat()
{
  int m,n,t,s,i,r,c,v;
  struct matnode *h[100],*p,*q;            /* h[]是十字链表每行的表头指针数组 */
  printf("行数m,列数n,非零元素个数t:");
  scanf("%d,%d,%d",&m,&n,&t);
  p=(struct matnode *)malloc(sizeof(struct matnode));
  h[0]=p;
  p->row=m;
  p->col=n;
  s=m>n ? m:n;
  for(i=1;i<=s;i++)
  {
    p=(struct matnode *)malloc(sizeof(struct matnode));
    h[i]=p;
    h[i-1]->tag.next=p;
    p->row=p->col=0;
    p->down=p->right=p;
  }
  h[s]->tag.next=h[0];
  for(i=1;i<=t;i++)                        /* t为非零元素个数 */
  {
    printf("\t 第%d个元素(行号m,列号n,值v):",i);
    scanf("%d,%d,%d",&r,&c,&v);
    p=(struct matnode *)malloc(sizeof(struct matnode));
    p->row=r;
    p->col=c;
    p->tag.val=v;
    q=h[r];
    while(q->right!=h[r]&&q->right->col<c)
   q=q->right;
    p->right=q->right;
    q->right=p;
    q=h[c];
    while(q->down!=h[c]&&q->down->row<r)
   q=q->down;
   p->down=q->down;
   }
   return(h[0]);
}
void prmat(struct matnode *hm)
{
   struct matnode *p,*q;
   printf("\n 按行表输出矩阵元素:\n");
   printf("row=%d col=%d\n",hm->row,hm->col);
   p=hm->tag.next;
   while(p!=hm)
   {
     q=p->right;
     while(p!=q)
     {
       printf("\t %d,%d,%d\n",q->row,q->col,q->tag.val);
       q=q->right;
     }
     p=p->tag.next;
   }
}
main()
{
   struct matnode *hm;
   hm=createmat();  /* 创建十字链表 */
   prmat(hm);       /* 输出十字链表 */
}

/*      例如矩阵    |  5  0  0  7 |           运行结果:  row=3 col=4     */
/*                  |  0 -3  0  0 |                       1,1,5           */
/*                  |  4  0  0  0 |                       1,4,7           */
/*                                                        2,2,-3          */
/*                                                        3,1,4           */

视频教程列表
文章教程搜索
 
C语言程序设计推荐教程
C语言程序设计热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058