tqyue

导航

 

谈一谈图都有哪些存储方式?

  1. 邻接矩阵

                                                                       对于无向图来说,是对称的

  2. 邻接表

         

          一个数组里面存储顶点所指向的下一个节点链表

      3.十字链表

   十字链表是二维的,链表的元素同时链接左右水平邻结点与上下垂直邻结点。

   这是十字链表节点元素的定义

struct OLNod{
       int i ;   //该非零元的行下标; 
       int j ;   //该非零元 的列下标; 
       int value ;   //该非零元的数值;
       struct OLNod *right ,*down ;//该非零元所在的行表和列表的后继链域; 
 };

struct CrossL{
      OLNod **rhead, **sead; 
         //十字链表的行头指针和列头指针; 定义为指向指针的指针;
     int row;     //稀疏矩阵的行数; 
     int col;     //稀疏矩阵的列数; 
     int num;     //稀疏矩阵的非零个数; 
  };

   4.邻接多重表

       邻接多重表适用于无向图存储。

       

有两个链表组成,左边的是该顶点相关的信息如顶点名称

右边的是表示边界点

mark表示这条边是否被访问过

ivex和jvex为该边依附的两个顶点在图中的位置,如(vi,vj)

ilink指向下一条依附于顶点ivex的边  jlink指向下一条依附于顶点jvex的边

info是改边的信息

 

 

posted on 2022-01-14 21:09  tqyue  阅读(114)  评论(0)    收藏  举报