그림 의 인접 표

#include
#include
#include
using namespace std;
#define Maxn 100
struct ARCnode  //   
{
	int adjvex;   //           
	ARCnode *next;  //           
};
struct Vnode  //  
{
	int data;     //    
	ARCnode *head1;   //        
	ARCnode *head2;   //        
};
struct LGraph
{
	Vnode point[Maxn];  //    
	int vexnum,arcnum;  //     ( ) 
};
LGraph lg;
void CreatLg()   //     G
{
	ARCnode *pi;  //             
	int v1,v2;   //        
	for(int i=0;i<=lg.vexnum;i++)  //          
		lg.point[i].head1=lg.point[i].head2=NULL; 
	for(int i=0;i<=lg.arcnum;i++)
	{
		scanf("%d%d",&v1,&v2);//           
		v1--;v2--;
		pi=new ARCnode;//       
		pi->adjvex=v2;  
		pi->next=lg.point[v1].head1;  //    
		lg.point[v1].head1=pi;

		pi=new ARCnode;
		pi->adjvex=v1;
		pi->next=lg.point[v2].head2;    //    
		lg.point[v2].head2=pi;
	}
}
//             
void DeleteLG()
{
	ARCnode *pi;
	for(int i=0;inext;
			delete pi;
			pi=lg.point[i].head1;
		}
		while(pi!=NULL)//   i                 
		{
			lg.point[i].head2=pi->next;
			delete pi;
			pi=lg.point[i].head2;
		}
	}
}
int main()
{
	ARCnode *pi;
	while(1)
	{
		lg.arcnum=lg.vexnum=0;
		scanf("%d%d",&lg.vexnum,&lg.arcnum);
		if(lg.vexnum==0)
			break;
		CreatLg();
		for(int i=0;inext;
			}
			if(i==0)
				printf("%d",od);
			else
				printf(" %d",od);
		}
		printf( "
" ); for(int i=0;inext; } if(i==0) printf("%d",od); else printf(" %d",od); } printf( "
" ); DeleteLG(); } }

배열 로 인접 표를 시 뮬 레이 션 합 니 다:https://blog.csdn.net/major_zhang/article/details/52155279

좋은 웹페이지 즐겨찾기