그림 저장 구조의 실현
5055 단어 데이터 구조
#include
#include
#include
#define MAX_VERTEX_NUM 20//
#define VRType int //
#define InfoType char//
#define VertexType int//
typedef enum{DG,DN,UDG,UDN}GraphKind;//
typedef struct//
{
VRType adj;// 0 1
//
InfoType *info;//
}ArcCell,AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];
typedef struct //
{
VertexType vexs[MAX_VERTEX_NUM];//
AdjMatrix arcs;//
int vexnum,arcnum;// ,
GraphKind kind;
}MGraph;
//
int LocateVex(MGraph *G,VertexType v)
{
int i=0;
for(;ivexnum;i++)
{
if(G->vexs[i]==v)
{
break;
}
}
if(i>=G->vexnum)
{
printf("
");
return -1;
}
return i;
}
//
void CreateDG(MGraph *G)
{
scanf("%d%d",&(G->vexnum),&(G->arcnum));//
for(int i=0;ivexnum;i++)
{
scanf("%d",&(G->vexs[i]));
}//
for(int i=0;ivexnum;i++)
{
for(int j=0;jvexnum;j++)
{
G->arcs[i][j].adj=0;
G->arcs[i][j].info=NULL;
}
}// , , NULL
for(int k=0;karcnum;k++)
{
int v1,v2;
scanf("%d%d",v1,v2);
int i=LocateVex(G,v1);
int j=LocateVex(G,v2);
if(i==-1||j==-1)
{
printf(" ");
return ;
}
G->arcs[i][j].adj=1;
}
}
//
void CreateDN(MGraph *G)
{
scanf("%d%d",&(G->vexnum),&(G->arcnum));
for(int i=0;ivexnum;i++)
{
scanf("%d",&(G->vexs[i]));
}
for(int i=0;ivexnum;i++)
{
for(int j=0;jvexnum;j++)
{
G->arcs[i][j].adj=0;
G->arcs[i][j].info=NULL;
}
}
for(int k=0;karcnum;k++)
{
int v1,v2;
scanf("%d%d",&v1,&v2);
int i=LocateVex(G,v1);
int j=LocateVex(G,v2);
if(i==-1||j==-1)
{
printf("
");
return ;
}
G->arcs[i][j].adj=1;
G->arcs[j][i].adj=1;// ,
}
}
//
void CreateUDG(MGraph *G)
{
scanf("%d%d",&(G->vexnum),&(G->arcnum));
for(int i=0;ivexnum;i++)
{
scanf("%d",&(G->vexs[i]));
}
for(int i=0;ivexnum;i++)
{
for(int j=0;jvexnum;j++)
{
G->arcs[i][j].adj=INT_MAX;//
G->arcs[i][j].info=NULL;
}
}
for(int k=0;karcnum;k++)
{
int v1,v2,w;
scanf("%d%d%d",&v1,&v2,&w);
int i=LocateVex(G,v1);
int j=LocateVex(G,v2);
if(i==-1||j==-1)
{
printf("
");
return;
}
G->arcs[i][j].adj=w;
}
}
//
void CreateUDN(MGraph *G)
{
scanf("%d%d",&(G->vexnum),&(G->arcnum));
for(int i=0;ivexnum;i++)
{
scanf("%d",&(G->vexs[i]));
}
for(int i=0;ivexnum;i++)
{
for(int j=0;jvexnum;j++)
{
G->arcs[i][j].adj=INT_MAX;
G->arcs[i][j].info=NULL;
}
}
for(int k=0;karcnum;k++)
{
int v1,v2,w;
scanf("%d%d%d",&v1,&v2,&w);
int i=LocateVex(G,v1);
int j=LocateVex(G,v2);
if(i==-1||j==-1)
{
printf("
");
return;
}
G->arcs[i][j].adj=w;
G->arcs[j][i].adj=w;
}
}
//
void CreateGraph(MGraph *G)
{
scanf("%d",&(G->kind));
switch(G->kind)
{
case DG:
return CreateDG(G);
break;
case DN:
return CreateDN(G);
break;
case UDG:
return CreateUDG(G);
break;
case UDN:
return CreateUDN(G);
break;
default:
break;
}
}
//
void PrintGraph(MGraph G)
{
for(int i=0;i
인접 표
#include
#include
#include
#define MAX_VERTEX_NUM 20//
#define VertexType int //
#define InfoType int //
typedef struct ArcNode//
{
int adjvex;//
struct ArcNode *nextarc;//
InfoType *info;//
}ArcNode;
typedef struct VNode
{
VertexType data;//
ArcNode *firstarc;//
}VNode,AdjList[MAX_VERTEX_NUM];//
typedef struct {
AdjList vertices;//
int vexnum,arcnum;//
int kind;//
}ALGraph;
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.