呵呵,今天的成果!!图的数组表示法

#include "conio.h"
#include "stdio.h"
#define MAXSIZE 100      //最大顶点数
struct Graph
{
 char vexs[MAXSIZE];     //顶点数组
 int arcs[MAXSIZE][MAXSIZE];       //邻接矩阵
 int vexnum,arcnum;                //图的当前顶点数和弧数
};

main()
{
 int quit=0,i,j;
 struct Graph MGraph;    //定义一个图
 MGraph.vexnum=0;
 MGraph.arcnum=0;        //图的当前顶点数和弧数为0
 for(i=0;i {
  for(j=0;j  MGraph.arcs[i][j]=0;
 }
 while(!quit)            //图的操作菜单
 {
  char ch;
  clrscr();
  puts("1 插入图节点");
  puts("2 插入弧");
  puts("3 当前节点数量");
  puts("4 察看指定节点的度");
  puts("5 察看当前邻接矩阵");
  puts("6 退出");
  ch=getch();
  switch(ch)
  {
   case '1':InsertVex(&MGraph);break;
   case '2':InsertArc(&MGraph);break;
   case '3':ShowVexNum(&MGraph);break;
   case '4':ShowDepth(&MGraph);break;
   case '5':Showarcs(&MGraph);break;
   case '6':quit=1;break;
  }
 }
}

InsertVex(struct Graph *MGraph)
{
 char data;
 clrscr();
 printf("请输入节点:");
 data=getche();         //不能用getchar,这样相当于输入了一个'/n'节点
 MGraph->vexs[MGraph->vexnum]=data;    //储存在顶点数组里
 MGraph->vexnum++;      //当前顶点+1
 puts("/n插入成功");
 printf("%d",MGraph->vexnum);
 getch();
}

InsertArc(struct Graph *MGraph)
{
 char node1,node2;
 int i,j;
 clrscr();
 printf("请输入弧的相关信息:");
 node1=getche();
 node2=getche();   //同样这里也不能用getchar
 for(i=0;ivexnum;i++)
 {
  printf("i:%c",MGraph->vexs[i]);
  if (MGraph->vexs[i]==node1)     //查找这两个节点,找到后跳出循环
  break;
 }
 for(j=0;jvexnum;j++)
 if(MGraph->vexs[j]==node2)
  break;
 MGraph->arcs[i][j]=MGraph->arcs[j][i]=1;     //在邻接矩阵中储存该关系
}

ShowVexNum(struct Graph *MGraph)
{
 clrscr();
 printf("共有%d个节点",MGraph->vexnum);      //显示当前节点数
 getch();
}

ShowDepth(struct Graph *MGraph)
{
 int i,j,depth=0;
 char ch;
 clrscr();
 printf("请输入要检查的节点:");
 ch=getche();
 for(i=0;ivexnum;i++)        //查找该节点
 if(MGraph->vexs[i]==ch)
 break;
 for(j=0;jvexnum;j++)        //计算出该行有多少个1 ,是1则depth+1
 if(1==MGraph->arcs[i][j])
 depth++;
 printf("/n该节点的度为:%d",depth);
 getch();
}

Showarcs(struct Graph *MGraph)
{
 int i,j;
 for(i=0;ivexnum;i++)       //两个循环套用显示当前邻接矩阵的状态
 for(j=0;jvexnum;j++)
 {
  printf("%5d",MGraph->arcs[i][j]);
  if(j==MGraph->vexnum-1)
  printf("/n");
 }
 getch();
}

你可能感兴趣的:(数据结构与算法,graph,struct,include,c)