有向图邻接表

时间: 1ms        内存:128M

描述:

编写一个程序,用邻接表的形式存储下面这个图,要求以字典序递增存储。

输入:

输出:

输出数据每行一个节点,输出行数与节点数相同。

 

输出格式:

当前节点 ……邻接节点

 

比如:

0 1 2 3

示例输入:

示例输出:

提示:

参考答案(内存最优[0]):

#include<stdio.h>
int main()
{
printf("0 1 2 3\n1 2 4\n2 5\n3 5\n4 5\n5\n");
}

参考答案(时间最优[0]):

#include<stdio.h>
#include<stdlib.h>
typedef struct VNode
{
    int adjvex;
    struct ANode*nextarc;
    //InfoType info;
}ArcNode;
typedef struct Vnode
{
    int data;
    ArcNode*firstarc;
}VNode;
typedef VNode AdjList[7];
typedef struct
{
    AdjList adjlist;
    int n,e;
}ALGraph;
int main()
{
    ALGraph*G;
    ArcNode *p;
    int i,j;
    G=(ALGraph*)malloc(sizeof(ALGraph));
    G->e=8;
    G->n=6;
    for(i=0;i<G->n;i++)
    {G->adjlist[i].firstarc=NULL;}
    for(i=0;i<G->n;i++)
    {G->adjlist[i].data=i;}
    p=(ArcNode*)malloc(sizeof(ArcNode));
    p->adjvex=5;
    p->nextarc=G->adjlist[2].firstarc;
    G->adjlist[2].firstarc=p;
    p->nextarc=NULL;
     p=(ArcNode*)malloc(sizeof(ArcNode));
    p->adjvex=5;
    p->nextarc=G->adjlist[3].firstarc;
    G->adjlist[3].firstarc=p;
    p->nextarc=NULL;
    p=(ArcNode*)malloc(sizeof(ArcNode));
    p->adjvex=5;
    p->nextarc=G->adjlist[4].firstarc;
    G->adjlist[4].firstarc=p;
    p->nextarc=NULL;
     p=(ArcNode*)malloc(sizeof(ArcNode));
    p->adjvex=4;
    p->nextarc=G->adjlist[1].firstarc;
    G->adjlist[1].firstarc=p;
    p=(ArcNode*)malloc(sizeof(ArcNode));
    p->adjvex=3;

    //printf("%d",G->adjlist[1].firstarc);

    p->nextarc=G->adjlist[0].firstarc;
    G->adjlist[0].firstarc=p;
     p=(ArcNode*)malloc(sizeof(ArcNode));
    p->adjvex=2;
    p->nextarc=G->adjlist[1].firstarc;
    G->adjlist[1].firstarc=p;
    p=(ArcNode*)malloc(sizeof(ArcNode));
    p->adjvex=2;
    p->nextarc=G->adjlist[0].firstarc;
    G->adjlist[0].firstarc=p;
     p=(ArcNode*)malloc(sizeof(ArcNode));
    p->adjvex=1;
    p->nextarc=G->adjlist[0].firstarc;
    G->adjlist[0].firstarc=p;
    for(i=0;i<G->n;i++)
    {
        printf("%d ",G->adjlist[i].data);
        p=G->adjlist[i].firstarc;

        while(p!=NULL)
        {
            if(p->nextarc!=NULL)
                printf("%d ",p->adjvex);
            else
                printf("%d\n",p->adjvex);
              p=p->nextarc;
        }
    }
    return 0;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。