邻接表加边的算法如何写?在一个带权的有向图中,采用邻接表存储结构,采用出边表,即某个顶点的邻接边表是指以该结点为起点的边

1个回答

  • 不太用到,试着写一下

    void InsertEdge(ALGraph *g,int startVex/*新边的出发顶点*/,int targetVex/*新边的目的顶点*/,float weight)

    {

    if(startVex < 0||startVex >= MaxVertexNum||targetVex < 0||targetVex >= MaxVertexNum)

    {

    printf("顶点错误");

    return;

    }

    EdgeNode *pEdge = (EdgeNode*)malloc(sizeof(EdgeNode)); //创建新的EdgeNode

    pEdge->adjvex = targetVex;//设置新EdgeNode中的目标节点

    pEdge->weight = weight;

    pEdge->next = g->adjlist[startVex].firstedge;//在VertexNode边链表的头部插入新边

    g->adjlist[startVex].firstedge = pEdge;

    }

    // typedef VertexNode AdjList[MaxVertexNum];对于这一句,用AdjList创建的对象,比如AdjList al,al是一个数组,可以用al[0]访问,这个数组每个元素的类型是VertexNode