天天看點

資料結構上機——無向圖鄰接矩陣

//無向圖鄰接矩陣搜尋周遊的程式代碼
#include<stdio.h>
//圖的鄰接矩陣類型定義
const int n=8;
const int e=10;
typedef char vextype;
typedef int adjtype;
typedef struct
{
  vextype vexs[n];
  adjtype arcs[n][n];
}graph;
graph*g=new graph;
void creatgraph();
void dfsa(int);
int visited[n];

int main()
{
  creatgraph();
  int i;
  while(1)
  {
    for(i=0;i<n;i++)
      visited[i]=0;
    printf("輸入出發點序号(0-7),輸入-1結束:");
    scanf("%d",&i);
    if(i==-1) break;
      dfsa(i);
  }
}

//建立無向圖鄰接矩陣
void creatgraph()
{
  int i,j,k;
  char ch;
  printf("輸入8個頂點的字元資料資訊:\n");
  for(i=0;i<n;i++)
    if((ch=getchar())!='\n') g->vexs[i]=ch;
  for(i=0;i<n;i++)
    for(j=0;j<n;j++)
      g->arcs[i][j]=0;
  printf("輸入10條邊的起、終點i,j:\n"); 
  for(k=0;k<e;k++)
  {
    scanf("%d,%d",&i,&j); //頂點序号從0開始
    g->arcs[i][j]=g->arcs[j][i]=1;
  }
}

//添加深度優先搜尋周遊算法
void dfsa(int i)
{
  int j;
  printf("node:%c\n",g->vexs[i]);
  visited[i]=1;
  for(j=0;j<n;j++)
  {
    if((g->arcs[i][j]==1)&&(visited[j]==0))
    {
      dfsa(j);
    }
  }
}      

繼續閱讀