그림 의 기본 조작의 구조 도 (인접 표)

/*
	           
*/
#include
#include
using namespace std;
#define MaxVertexNum 20
typedef struct node //    
{
	int index;    //     
	node * next;  //       
	int weight;  //         (    )
}EdgeNode;

typedef struct   //      
{
	int index;  //        
	EdgeNode * firstEdge;  //                
}VertexNode;

typedef VertexNode AdjList[MaxVertexNum];

typedef struct
{
	AdjList adjlist;  
	int n;
	int e;
}Graph;

void createGraph(Graph * G)
{
	int i,j,k;
	EdgeNode *s;
	printf("        
"); scanf("%d %d",&G->n,&G->e); // for(i = 1; i <= G->n; i++) { G->adjlist[i].index = i; // G->adjlist[i].firstEdge = NULL; // NULL } // for(k = 1; k <= G->e; k++) { printf(" :
"); scanf("%d %d",&i,&j); s = (EdgeNode *)malloc(sizeof(EdgeNode)); s->index = j; s->next = G->adjlist[i].firstEdge; G->adjlist[i].firstEdge = s; s = (EdgeNode *)malloc(sizeof(EdgeNode)); s->index = i; s->next = G->adjlist[j].firstEdge; G->adjlist[j].firstEdge = s; } } int main() { int i; Graph * G = (Graph *)malloc(sizeof(Graph)); createGraph(G); for(i = 1; i <= G->n; i++) { printf("%d->",i); while(G->adjlist[i].firstEdge != NULL) { printf("%d->",G->adjlist[i].firstEdge->index); G->adjlist[i].firstEdge = G->adjlist[i].firstEdge->next; } printf("
"); } return 0; }

좋은 웹페이지 즐겨찾기