Пример #1
0
void DestroyGraph(MGraph &G)
{
	int i;

	for (i = G.vexnum - 1; i >= 0; i--)
		DeleteVex(G, G.vexs[i]);
}
Пример #2
0
Status DestroyUDG( AMLGraph *G )     //F**k you!
{
 int i ;
 for( i = ( *G ).vexnum - 1 ; i >= 0 ; -- i )
  DeleteVex( G , ( *G ).adjmulist[ i ].data ) ;
 return OK ;
}
Пример #3
0
 void main()
 {
   int i,j,k,n;
   VertexType v1,v2;
   MGraph g;
   CreateFAG(&g);
   Display(g);
   printf("修改顶点的值,请输入原值 新值: ");
   scanf("%s%s",v1,v2);
   PutVex(&g,v1,v2);
   printf("深度优先搜索的结果:\n");
   DFSTraverse(g,visit);
   printf("广度优先搜索的结果:\n");
   BFSTraverse(g,visit);
   printf("删除一条边或弧,请输入待删除边或弧的弧尾 弧头:");
   scanf("%s%s",v1,v2);
   DeleteArc(&g,v1,v2);
   Display(g);
   DestroyGraph(&g);
   printf("请顺序选择有向图,有向网,无向图,无向网\n");
   for(i=0;i<4;i++) /* 验证4种情况 */
   {
     CreateGraph(&g);
     Display(g);
     printf("插入新顶点,请输入顶点的值: ");
     scanf("%s",v1);
     InsertVex(&g,v1);
     printf("插入与新顶点有关的弧或边,请输入弧或边数: ");
     scanf("%d",&n);
     for(k=0;k<n;k++)
     {
       printf("请输入另一顶点的值: ");
       scanf("%s",v2);
       if(g.kind<=1) /* 有向 */
       {
         printf("对于有向图或网,请输入另一顶点的方向(0:弧头 1:弧尾): ");
         scanf("%d",&j);
         if(j)
           InsertArc(&g,v2,v1);
         else
           InsertArc(&g,v1,v2);
       }
       else /* 无向 */
         InsertArc(&g,v1,v2);
     }
     Display(g);
     printf("删除顶点及相关的弧或边,请输入顶点的值: ");
     scanf("%s",v1);
     DeleteVex(&g,v1);
     Display(g);
     DestroyGraph(&g);
   }
 }
Пример #4
0
 void main()
 {
   int i,j,k,n;
   ALGraph g;
   VertexType v1,v2;
   printf("请顺序选择有向图,有向网,无向图,无向网\n");
   for(i=0;i<4;i++) // 验证4种情况
   {
     CreateGraph(g);
     Display(g);
     printf("插入新顶点,请输入顶点的值: ");
     scanf("%s",v1);
     InsertVex(g,v1);
     printf("插入与新顶点有关的弧或边,请输入弧或边数: ");
     scanf("%d",&n);
     for(k=0;k<n;k++)
     {
       printf("请输入另一顶点的值: ");
       scanf("%s",v2);
       if(g.kind<=1) // 有向
       {
	 printf("对于有向图或网,请输入另一顶点的方向(0:弧头 1:弧尾): ");
	 scanf("%d",&j);
	 if(j)
	   InsertArc(g,v2,v1);
	 else
	   InsertArc(g,v1,v2);
       }
       else // 无向
	 InsertArc(g,v1,v2);
     }
     Display(g);
     if(i==3)
     {
       printf("删除一条边或弧,请输入待删除边或弧的弧尾 弧头:");
       scanf("%s%s",v1,v2);
       DeleteArc(g,v1,v2);
       printf("修改顶点的值,请输入原值 新值: ");
       scanf("%s%s",v1,v2);
       PutVex(g,v1,v2);
     }
     printf("删除顶点及相关的弧或边,请输入顶点的值: ");
     scanf("%s",v1);
     DeleteVex(g,v1);
     Display(g);
     DestroyGraph(g);
   }
 }
Пример #5
0
 void main()
 {
   int i,j,k,n;
   MGraph g;
   VertexType v1,v2;
   printf("请顺序选择有向图,有向网,无向图,无向网\n");
   for(i=0;i<4;i++) // 验证4种情况
   {
     CreateGraph(g); // 构造图g
     Display(g); // 输出图g
     printf("插入新顶点,请输入顶点的值: ");
     scanf("%s",v1);
     InsertVex(g,v1);
     printf("插入与新顶点有关的弧或边,请输入弧或边数: ");
     scanf("%d",&n);
     for(k=0;k<n;k++)
     {
       printf("请输入另一顶点的值: ");
       scanf("%s",v2);
       if(g.kind<=1) // 有向
       {
         printf("对于有向图或网,请输入另一顶点的方向(0:弧头 1:弧尾): ");
         scanf("%d",&j);
         if(j) // v2是弧尾
           InsertArc(g,v2,v1);
         else // v2是弧头
           InsertArc(g,v1,v2);
       }
       else // 无向
         InsertArc(g,v1,v2);
     }
     Display(g); // 输出图g
     printf("删除顶点及相关的弧或边,请输入顶点的值: ");
     scanf("%s",v1);
     DeleteVex(g,v1);
     Display(g); // 输出图g
   }
   DestroyGraph(g); // 销毁图g
 }
Пример #6
0
 void main()
 {
   int j,k,n;
   OLGraph g;
   VertexType v1,v2;
   CreateDG(g);
   Display(g);
   printf("修改顶点的值,请输入原值 新值: ");
   scanf("%s%s",v1,v2);
   PutVex(g,v1,v2);
   printf("插入新顶点,请输入顶点的值: ");
   scanf("%s",v1);
   InsertVex(g,v1);
   printf("插入与新顶点有关的弧,请输入弧数: ");
   scanf("%d",&n);
   for(k=0;k<n;k++)
   {
     printf("请输入另一顶点的值 另一顶点的方向(0:弧头 1:弧尾): ");
     scanf("%s%d",v2,&j);
     if(j)
       InsertArc(g,v2,v1);
     else
       InsertArc(g,v1,v2);
   }
   Display(g);
   printf("删除一条弧,请输入待删除弧的弧尾 弧头:");
   scanf("%s%s",v1,v2);
   DeleteArc(g,v1,v2);
   Display(g);
   printf("删除顶点及相关的弧,请输入顶点的值: ");
   scanf("%s",v1);
   DeleteVex(g,v1);
   Display(g);
   printf("深度优先搜索的结果:\n");
   DFSTraverse(g,visit);
   printf("广度优先搜索的结果:\n");
   BFSTraverse(g,visit);
   DestroyGraph(g);
 }
Пример #7
0
void DestroyGraph(AMLGraph *G)
{
  int i;
  for(i=(*G).vexnum-1;i>=0;i--)
    DeleteVex(G,(*G).adjmulist[i].data);
}