用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - c代码库

有向图的十字链表数据结构

2012-10-10 作者: 神马举报

[c]代码库

#define MAX_VERTEX_NUM 20
typedef struct ArcBox
{
    int tailvex,headvex; /*该弧的尾和头顶点的位置*/
    struct ArcBox * hlink, tlink;
    /分别为弧头相同和弧尾相财的弧的链域*/
    InfoType info; /*该弧相关信息的指针*/
} ArcBox;
typedef struct VexNode
{
VertexType vertex:
    ArcBox fisrin, firstout; /*分别指向该顶点第一条入弧和出弧*/
} VexNode;
typedef struct
{
    VexNode xlist[MAX_VERTEX_NUM]; /*表头向量*/
    int vexnum,arcnum; /*有向图的顶点数和弧数*/
} OLGraph;
 
void CreateDG ( LOGraph **G )
/*采用十字链表表示,构造有向图G(G.kind=DG)*/
{
    scanf ( & ( *G->brcnum ),& ( *G->arcnum ),&IncInfo ); /*IncInfo 为0 则各弧不含其实信息*/
    for ( i=0; i<*G->vexnum; ++i ) /*构造表头向量*/
    {
        scanf ( & ( G->xlist[i].vertex ) ); /*输入顶点值*/
        *G->xlist[i].firstin=NulL;
        *G->xlist[i].firstout =NULL; /*初始化指针*/
    }
    for ( k=0; k<G.arcnum; ++k ) /*输入各弧并构造十字链表*/
    {
        scanf ( &v1,&v2 ); /*输入一条弧的始点和终点*/
        i=LocateVex ( *G,v1 );
        j=LocateVex ( *G,v2 ); /*确定v1 和v2 在G 中位置*/
        p= ( ArcBox* ) malloc ( sizeof ( ArcBox ) ); /*假定有足够空间*/
        *p={ i,j,*G->xlist[j].fistin,*G->xlist[i].firstout,NULL} /*对弧结点赋值*/
           /*{tailvex,headvex,hlink,tlink,info}*/
           *G->xlist[j].fisrtin=*G->xlist[i].firstout=p; /*完成在入弧和出弧链头的插入*/
        if ( IncInfo ) Input ( p->info ); /*若弧含有相关信息,则输入*/
    }
}/*CreateDG*/


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...