1
#include<stdio.h>
#include<conio.h>

struct GNode{
    struct gnode* nextnode;
    struct gnode* arcptr;
    int Visited;
}

typedef struct GNode* Grnd;

struct ArcNode{
    struct arcnode* nextarc;
    struct acrnode* ndptr;
}

typedef struct ArcNode* Arc;

Grnd getGraphNode(){
    Grnd NewNode=(Grnd)malloc(sizeof(struct GNode));

    NewNode->nextnode=NULL;
    NewNode->arcptr=NULL;

    return NewNode;
}

Arc getArcNode(){
    Arc NewArc=(Arc)malloc(sizeof(struct ArcNode));

    NewArc->nextarc=NULL;
    NewArc->ndptr=NULL;

    return NewArc;
}

void join(Grnd *GNode1,Grnd *GNode2){
    Arc NewArc=getArcNode();
    NewArc->ndptr=(*GNode2);

    NewArc->nextarc=(*GNode1)->arcptr;
    (*GNode1)->arcptr=NewArc;
}  

Grnd addNode(Grnd *Graph){
    Grnd NewNode=getGraphNode();

    if((*Graph)==NULL){
        (*Graph)=NewNode;  
        return NewNode;
    }

    while((*Graph)->nextnode!=NULL)
        Graph=Graph->nextnode;

    (*Graph)->nextnode=NewNode;

    return NewNode;  
}

上記の C コードを考慮すると、join関数を呼び出して 2 つのグラフ ノードを結合すると、実際にそれらが結合されるのではないかと心配しています。プログラムが のスコープから外れるやいなや、join存在NewArcしないからです。では、グラフを作成した後、特定のノードに隣接するすべてのノードを見つけようとすると、できるでしょうか? なぜ?

4

1 に答える 1