亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 圖的遍歷.cpp

?? C++經典算法源碼絕對的經典好的算法源碼
?? CPP
字號:
//* * * * * * * * * * * * * * * * * * * * * * * *
//*CHAPTER          :5  (5_1)                   *
//*PROGRAM          :圖的遍歷                   *
//*CONTENT          :生成,深度、廣度優先遍歷   *
//* * * * * * * * * * * * * * * * * * * * * * * *
#include <dos.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_VERTEX_NUM 20 //圖的最大頂點數
#define MAXQSIZE 30       //隊列的最大容量 
enum BOOL {False,True};
typedef struct ArcNode
{int adjvex;              //該弧所指向的頂點的位置
 struct ArcNode *nextarc; //指向下一條弧的指針
}ArcNode;       //弧結點
typedef struct
{ArcNode* AdjList[MAX_VERTEX_NUM]; //指向第一條依附該頂點的弧的指針
 int vexnum,arcnum;                //圖的當前頂點和弧數 
 int GraphKind;    //圖的種類,0---無向圖,1---有向圖
}Graph;   
typedef struct        //隊列結構
{int  elem[MAXQSIZE]; //數據域
 int front;           //隊頭指針
 int rear;            //隊尾指針
}SqQueue; 
BOOL visited[MAX_VERTEX_NUM]; //全局變量——訪問標志數組
void CreateGraph(Graph &);    //生成圖的鄰接表
void DFSTraverse(Graph);      //深度優先搜索遍歷圖
void DFS(Graph,int);           
void BFSTraverse(Graph);      //廣度優先搜索遍歷圖
void Initial(SqQueue &);      //初始化一個隊列
BOOL QueueEmpty(SqQueue);     //判斷隊列是否空
BOOL EnQueue(SqQueue &,int);   //將一個元素入隊列
BOOL DeQueue(SqQueue &,int &); //將一個元素出隊列
int  FirstAdjVex(Graph,int);   //求圖中某一頂點的第一個鄰接頂點
int  NextAdjVex(Graph,int,int); //求某一頂點的下一個鄰接頂點
void main()
{Graph G;  //采用鄰接表結構的圖
 char j='y';
 textbackground(3);  //設定屏幕顏色
 textcolor(15);
 clrscr();
 //------------------程序解說----------------------------
 printf("本程序將演示生成一個圖,并對它進行遍歷.\n");
 printf("首先輸入要生成的圖的種類.\n");
 printf("0---無向圖, 1--有向圖\n");
 printf("之后輸入圖的頂點數和弧數。\n格式:頂點數,弧數;例如:4,3\n");
 printf("接著輸入各邊(弧尾,弧頭).\n例如:\n1,2\n1,3\n2,4\n");
 printf("程序會生成一個圖,并對它進行深度和廣度遍歷.\n");
 printf("深度遍歷:1->2->4->3\n廣度遍歷:1->2->3->4\n");
 //------------------------------------------------------
 while(j!='N'&&j!='n')
      {printf("請輸入要生成的圖的種類(0/1):");
       scanf("%d",&G.GraphKind); //輸入圖的種類
       printf("請輸入頂點數和弧數:");
       scanf("%d,%d",&G.vexnum,&G.arcnum); //輸入圖的頂點數和弧數
       CreateGraph(G);       //生成鄰接表結構的圖
       DFSTraverse(G);       //深度優先搜索遍歷圖
       BFSTraverse(G);       //廣度優先搜索遍歷圖
       printf("圖遍歷完畢,繼續進行嗎?(Y/N)");
       scanf(" %c",&j);
     }
}

void CreateGraph(Graph &G)
{//構造鄰接表結構的圖G
 int i;
 int start,end; 
 ArcNode *s;
 for(i=1;i<=G.vexnum;i++) G.AdjList[i]=NULL; //初始化指針數組
 for(i=1;i<=G.arcnum;i++)
   {scanf("%d,%d",&start,&end); //輸入弧的起點和終點
    s=(ArcNode *)malloc(sizeof(ArcNode)); //生成一個弧結點
    s->nextarc=G.AdjList[start]; //插入到鄰接表中
    s->adjvex=end;
    G.AdjList[start]=s;
    if(G.GraphKind==0)  //若是無向圖,再插入到終點的弧鏈中
       {s=(ArcNode *)malloc(sizeof(ArcNode));
	s->nextarc=G.AdjList[end];
	s->adjvex=start;
	G.AdjList[end]=s;
       }
   }
}
void DFSTraverse(Graph G)
{//深度優先遍歷圖G
 int i;
 printf("DFSTraverse:");
 for(i=1;i<=G.vexnum;i++) visited[i]=False; //訪問標志數組初始化
 for(i=1;i<=G.vexnum;i++)
     if(!visited[i]) DFS(G,i); //對尚未訪問的頂點調用DFS
 printf("\b\b  \n");
}
void DFS(Graph G,int i)
{//從第i個頂點出發遞歸地深度遍歷圖G
 int w;
 visited[i]=True;  //訪問第i個頂點
 printf("%d->",i);
 for(w=FirstAdjVex(G,i);w;w=NextAdjVex(G,i,w))
   if(!visited[w]) DFS(G,w); //對尚未訪問的鄰接頂點w調用DFS
}

void BFSTraverse(Graph G)
{//按廣度優先非遞歸的遍歷圖G,使用輔助隊列Q和訪問標志數組visited
 int i,u,w;
 SqQueue Q; 
 printf("BFSTreverse:");
 for(i=1;i<=  G.vexnum;i++)  visited[i]=False; //訪問標志數組初始化
 Initial(Q);  //初始化隊列
 for(i=1;i<=G.vexnum;i++)
   if(!visited[i])
     {visited[i]=True;  //訪問頂點i
      printf("%d->",i);
      EnQueue(Q,i);     //將序號i入隊列
      while(!QueueEmpty(Q)) //若隊列不空,繼續
       {DeQueue(Q,u);   //將隊頭元素出隊列并置為u
	for(w=FirstAdjVex(G,u);w;w=NextAdjVex(G,u,w))
	  if(!visited[w])  //對u的尚未訪問的鄰接頂點w進行訪問并入隊列
	     {visited[w]=True;
	      printf("%d->",w);
	      EnQueue(Q,w);
	     }
       }
     }
 printf("\b\b  \n");
}

int FirstAdjVex(Graph G,int v)
{//在圖G中尋找第v個頂點的第一個鄰接頂點
 if(!G.AdjList[v]) return 0;
 else return(G.AdjList[v]->adjvex);
}
int NextAdjVex(Graph G,int v,int u)
{//在圖G中尋找第v個頂點的相對于u的下一個鄰接頂點
 ArcNode *p;
 p=G.AdjList[v];
 while(p->adjvex!=u) p=p->nextarc; //在頂點v的弧鏈中找到頂點u
 if(p->nextarc==NULL) return 0;    //若已是最后一個頂點,返回0
 else return(p->nextarc->adjvex);  //返回下一個鄰接頂點的序號
}

void Initial(SqQueue &Q)      
{//隊列初始化
 Q.front=Q.rear=0; 
}
BOOL QueueEmpty(SqQueue Q)
{//判斷隊列是否已空,若空返回True,否則返回False
 if(Q.front==Q.rear) return True;
 else return False;
}

BOOL EnQueue(SqQueue &Q,int ch)
{//入隊列,成功返回True,失敗返回False
 if((Q.rear+1)%MAXQSIZE==Q.front) return False;
 Q.elem[Q.rear]=ch;
 Q.rear=(Q.rear+1)%MAXQSIZE;
 return True;
}

BOOL DeQueue(SqQueue &Q,int &ch)
{//出隊列,成功返回True,并用ch返回該元素值,失敗返回False
 if(Q.front==Q.rear) return False;
 ch=Q.elem[Q.front];
 Q.front=(Q.front+1)%MAXQSIZE;
 return True;                     //成功出隊列,返回True
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99免费精品视频| 精品中文字幕一区二区小辣椒| 精品久久久久99| 欧美日韩精品电影| 欧美日韩情趣电影| 在线不卡欧美精品一区二区三区| 91在线观看一区二区| 成人sese在线| 91视频在线观看| 欧美性一级生活| 777久久久精品| 精品国产乱码久久久久久图片 | 一本久道久久综合中文字幕| 国产精品一区二区黑丝| 国产精品99久| 91蜜桃免费观看视频| 欧美曰成人黄网| 制服丝袜亚洲色图| 精品成人一区二区三区四区| 久久久亚洲国产美女国产盗摄 | 亚洲老妇xxxxxx| 无吗不卡中文字幕| 蜜桃久久久久久| 粉嫩av亚洲一区二区图片| 99精品一区二区三区| 欧美影院一区二区| 精品久久久久香蕉网| 中文字幕乱码一区二区免费| 亚洲猫色日本管| 麻豆91精品视频| www.一区二区| 日韩无一区二区| 国产精品成人免费| 日韩精品1区2区3区| 国产中文字幕精品| 一本色道久久综合精品竹菊| 91精品国产色综合久久不卡电影| 久久久蜜臀国产一区二区| 亚洲精品ww久久久久久p站| 免费成人在线观看视频| 欧美一区二区在线不卡| 久久先锋影音av鲁色资源网| 亚洲欧美日韩国产手机在线| 香蕉久久夜色精品国产使用方法 | 精品日韩欧美一区二区| 国产精品美女久久久久久久久| 亚洲va国产天堂va久久en| 国产成人一级电影| 欧美电影一区二区三区| 国产精品电影院| 国内精品免费**视频| 777色狠狠一区二区三区| 亚洲精品一二三| 丁香六月久久综合狠狠色| 日韩女同互慰一区二区| 亚洲最新在线观看| 成人一区二区三区| 日韩午夜激情视频| 午夜视频一区在线观看| 色一区在线观看| 国产欧美视频一区二区| 精品一区二区三区在线观看 | 日本一区二区成人| 免费三级欧美电影| 欧美日韩精品综合在线| 一区二区三区精品在线| a级高清视频欧美日韩| 欧美精品一区二区三区一线天视频| 亚洲福利电影网| 欧美午夜一区二区三区 | 欧洲精品一区二区| ...av二区三区久久精品| 国产高清成人在线| 欧美videos中文字幕| 美女脱光内衣内裤视频久久影院| 欧美日韩精品欧美日韩精品 | 国产成人精品三级| 精品国产99国产精品| 久久精品国产第一区二区三区| 69久久99精品久久久久婷婷| 五月天激情小说综合| 在线播放91灌醉迷j高跟美女| 亚洲国产视频一区| 欧美老年两性高潮| 男人的天堂亚洲一区| 精品va天堂亚洲国产| 国产福利一区二区三区视频在线| 久久精品视频网| 不卡高清视频专区| 亚洲精品成人在线| 69成人精品免费视频| 激情欧美一区二区三区在线观看| 精品久久久久一区二区国产| 国产成人在线视频网址| 中文字幕亚洲一区二区av在线 | 91麻豆精品国产自产在线| 亚洲综合视频网| 日韩亚洲欧美一区| 国产乱人伦偷精品视频不卡 | 日韩女优电影在线观看| 国产很黄免费观看久久| 亚洲乱码国产乱码精品精可以看 | 夜夜精品视频一区二区| 在线成人免费观看| 国产成人在线观看免费网站| 一区二区成人在线观看| 欧美大尺度电影在线| 成熟亚洲日本毛茸茸凸凹| 亚洲电影在线免费观看| 欧美r级电影在线观看| 99在线视频精品| 视频一区二区欧美| 欧美激情一区在线| 欧美久久久久久久久中文字幕| 国产一区二区三区在线看麻豆| 国产精品美女久久久久久久久| 在线播放中文字幕一区| youjizz国产精品| 看电影不卡的网站| 一区二区三区欧美日| 精品国产一区二区三区av性色| 一本一道久久a久久精品| 美女视频网站久久| 一区二区三区在线看| 久久人人超碰精品| 欧美日本在线播放| 9l国产精品久久久久麻豆| 精品亚洲免费视频| 亚洲一区二区三区三| 中文字幕亚洲综合久久菠萝蜜| 精品国产精品网麻豆系列| 欧美在线免费播放| 色综合天天综合在线视频| 国模冰冰炮一区二区| 日韩av电影天堂| 亚洲综合色丁香婷婷六月图片| 国产亚洲成aⅴ人片在线观看| 91精品国产免费| 欧美色大人视频| 91啪亚洲精品| 成人国产亚洲欧美成人综合网| 久久9热精品视频| 日韩国产欧美三级| 亚洲无人区一区| 亚洲精品成人在线| 亚洲欧美精品午睡沙发| 国产精品欧美综合在线| 国产欧美日韩中文久久| www欧美成人18+| 精品久久五月天| 久久综合久久99| 久久久精品免费观看| 久久理论电影网| 久久久777精品电影网影网| 久久久另类综合| 久久久久久久一区| 国产午夜久久久久| 亚洲国产精品成人综合| 国产精品国产自产拍在线| 17c精品麻豆一区二区免费| 亚洲国产高清在线| 亚洲丝袜精品丝袜在线| 亚洲手机成人高清视频| 亚洲激情中文1区| 午夜在线电影亚洲一区| 日韩精品国产欧美| 精品一区二区三区欧美| 国产精品白丝av| 99国内精品久久| 欧美性猛交xxxx乱大交退制版| 欧美视频一区二区三区四区| 欧美久久婷婷综合色| 精品福利在线导航| 国产精品嫩草影院com| 中文字幕中文字幕一区| 亚洲另类色综合网站| 亚洲成人av在线电影| 经典三级视频一区| 成人91在线观看| 欧美日韩国产综合一区二区| 欧美一区二区三区四区久久 | 国产成人免费9x9x人网站视频| 粉嫩av一区二区三区| 欧美性大战久久久久久久| 日韩精品资源二区在线| 中文字幕高清一区| 亚洲成人一区二区| 国产美女在线观看一区| av在线综合网| 欧美一区二区久久久| 中文在线一区二区| 视频一区视频二区中文| 成人午夜视频免费看| 欧美剧情电影在线观看完整版免费励志电影| 91精品国产综合久久精品图片 | 在线看国产日韩| 精品伦理精品一区| 亚洲一区二三区| 国产一区二区三区久久悠悠色av | 国产一区二三区好的|