그림 의 인접 표 생 성 출력
3632 단어 데이터 구조
정점 표 의 결산 점 은 data 와 friestedge 두 도 메 인 에 의 해 표 시 됩 니 다. data 는 데이터 도 메 인 이 고 정점 정 보 를 저장 합 니 다. friestedge 는 지침 도 메 인 이 며 사 이 드 표 의 첫 번 째 정점, 즉 정점 의 첫 번 째 인접 점 을 가리 킵 니 다.
typedef struct VertexNode /* */
{
VertexType data; /* , */
EdgeNode *firstedge;/* */
}VertexNode, AdjList[MAXVEX];
사 이 드 시트 의 결산 점 은 adjvex 와 next 두 개의 도 메 인 으로 구성 되 어 있 으 며, adjvex 는 인접 점 도 메 인 으로 특정한 정점 의 인접 점 을 정점 표 에 저장 하 는 아래 표 시 를 저장 하고, next 도 메 인 은 사 이 드 시트 의 결산 점 다음 결점 을 가리 키 는 지침 을 저장 합 니 다.
typedef struct EdgeNode /* */
{
int adjvex; /* , */
EdgeType info; /* , */
struct EdgeNode *next; /* , */
}EdgeNode;
완전한 노드 정의 코드
typedef int Status; /* Status , , OK */
typedef char VertexType; /* */
typedef int EdgeType; /* */
typedef struct EdgeNode /* */
{
int adjvex; /* , */
EdgeType info; /* , */
struct EdgeNode *next; /* , */
}EdgeNode;
typedef struct VertexNode /* */
{
VertexType data; /* , */
EdgeNode *firstedge;/* */
}VertexNode, AdjList[MAXVEX];
typedef struct
{
AdjList adjList;
int numNodes,numEdges; /* */
}GraphAdjList;
인접 표 생 성 코드 는 다음 과 같 습 니 다.
/* */
void CreateALGraph(GraphAdjList *G)
{
int i,j,k;
EdgeNode *e;
printf(" :
");
scanf("%d,%d",&G->numNodes,&G->numEdges); /* */
for(i = 0;i < G->numNodes;i++) /* , */
{
printf("
");
scanf("%s",&G->adjList[i].data); /* */
G->adjList[i].firstedge=NULL; /* */
}
for(k = 0;k < G->numEdges;k++)/* */
{
printf(" (vi,vj) :
");
scanf("%d,%d",&i,&j); /* (vi,vj) */
e=(EdgeNode *)malloc(sizeof(EdgeNode)); /* , */
e->adjvex=j; /* j */
e->next=G->adjList[i].firstedge; /* e */
G->adjList[i].firstedge=e; /* e */
e=(EdgeNode *)malloc(sizeof(EdgeNode)); /* , */
e->adjvex=i; /* i */
e->next=G->adjList[j].firstedge; /* e */
G->adjList[j].firstedge=e; /* e */
}
}
출력 코드 인쇄
void DispGraphAdjList(GraphAdjList *G)
{
int i;
EdgeNode *p;
printf("
");
printf("%6s%8s%12s
"," "," "," ");
for(i=0;i< G->numNodes;i++)
{
printf("%4d %8c",i,G->adjList[i].data);//
for(p=G->adjList[i].firstedge;p!=NULL;p=p->next)
printf("%4d",p->adjvex);
printf("
");
}
}
주 함수 코드
int main(void)
{
GraphAdjList G;
CreateALGraph(&G);
DispGraphAdjList(&G);
return 0;
}
헤더 파일 정의 및 참조
#include "stdio.h"
#include "stdlib.h"
#include "io.h"
#include "math.h"
#include "time.h"
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define MAXVEX 100 /* , */
테스트 결과
이 코드 는 그림 인접 표 와 관련 된 작업 이 없습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.