12주 프로젝트 4 출력 간단한 경로
main.cpp:
/*
*
* :mian.cpp
* :
* :2015 11 30
* :v1.0
*
* : G u v s 。
*
* :
* :
*/
#include <stdio.h>
#include <malloc.h>
#include "graph.h"
int visited[MAXV]; //
void SomePaths(ALGraph *G,int u,int v,int s, int path[],int d)
//d , -1
{
int w,i;
ArcNode *p;
visited[u]=1;
d++; // 1
path[d]=u; //
if (u==v && d==s) //
{
printf(" ");
for (i=0; i<=d; i++)
printf("%d ",path[i]);
printf("
");
}
p=G->adjlist[u].firstarc; //p u
while(p!=NULL)
{
w=p->adjvex; //w u
if (visited[w]==0) // ,
SomePaths(G,w,v,s,path,d);
p=p->nextarc; // u
}
visited[u]=0; //
}
void DispSomePaths(ALGraph *G,int u,int v, int s)
{
int i;
int path[MAXV];
for (i=0; i<G->n; i++)
visited[i]=0; //
printf(" %d %d %d :
",u,v,s);
SomePaths(G,u,v,s,path,-1);
printf("
");
}
int main()
{
ALGraph *G;
int A[5][5]=
{
{0,1,0,1,0},
{1,0,1,0,0},
{0,1,0,1,1},
{1,0,1,0,1},
{0,0,1,1,0}
}; //
ArrayToList(A[0], 5, G);
DispSomePaths(G, 1, 4, 3);
return 0;
}
#ifndef GRAPH_H_INCLUDED
#define GRAPH_H_INCLUDED
#define MAXV 100 //
#define INF 32767 //INF ∞
typedef int InfoType;
//
typedef struct
{
int no; //
InfoType info; // ,
} VertexType; //
typedef struct //
{
int edges[MAXV][MAXV]; //
int n,e; // ,
VertexType vexs[MAXV]; //
} MGraph; //
//
typedef struct ANode //
{
int adjvex; //
struct ANode *nextarc; //
InfoType info; // ,
} ArcNode;
typedef int Vertex;
typedef struct Vnode //
{
Vertex data; //
int count; // ,
ArcNode *firstarc; //
} VNode;
typedef VNode AdjList[MAXV]; //AdjList
typedef struct
{
AdjList adjlist; //
int n,e; // n e
} ALGraph; //
void ArrayToMat(int *Arr, int n, MGraph &g); //
void ArrayToList(int *Arr, int n, ALGraph *&); //
void MatToList(MGraph g,ALGraph *&G);// g G
void ListToMat(ALGraph *G,MGraph &g);// G g
void DispMat(MGraph g);// g
void DispAdj(ALGraph *G);// G
#endif // GRAPH_H_INCLUDED
#include <stdio.h>
#include <malloc.h>
#include "graph.h"
void ArrayToList(int *Arr, int n, ALGraph *&G)
{
int i,j,count=0; //count , 0
ArcNode *p;
G=(ALGraph *)malloc(sizeof(ALGraph));
G->n=n;
for (i=0; i<n; i++) //
G->adjlist[i].firstarc=NULL;
for (i=0; i<n; i++) //
for (j=n-1; j>=0; j--)
if (Arr[i*n+j]!=0) // , Arr n×n ,Arr[i*n+j] Arr[i][j]
{
p=(ArcNode *)malloc(sizeof(ArcNode)); // *p
p->adjvex=j;
p->info=Arr[i*n+j];
p->nextarc=G->adjlist[i].firstarc; // *p
G->adjlist[i].firstarc=p;
}
G->e=count;
}
실행 결과:
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.