日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DFS BFS代码

發布時間:2025/3/15 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DFS BFS代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

#define maxnum 30

#include<bits_stdc++.h>

int visited[maxnum]={0};

using namespace std;

typedef struct bian//邊

{

??? int mark;//標記是否搜索

??? int ivex,jvex;//兩頂點位置

??? bian *ilink,*jlink;//指向兩頂點的其他邊

??? int info;//信息

} bian,*pbian;

typedef struct dian//點

{

??? char name;

??? bian *first;//指向邊

} dain;

typedef struct graph//圖

{

??? dian dj[maxnum];

} graph;

typedef struct//隊列

{

??? int base[maxnum];

??? int f;//front

??? int r;//rear

}que;

void initq(que &q)//初始化隊列

{

??? q.f=q.r=0;

}

void enq(que &q,int e)//隊尾插入

{

??? q.base[q.r]=e;

??? q.r=q.r+1;

}

void deq(que &q,int &e)//隊頭刪除

{

??? e=q.base[q.f];

??? q.f=q.f+1;

}

int getlc(graph &g,char c,int n)//將頂點信息轉化為位置

{

??? for(int i=0; i<n; i++)

??????? if(c==g.dj[i].name)

????? return i;

}

void creatgraph(graph &g,int &n)//圖的創建

{

??? int k,m;

??? cout<<"請輸入圖頂點個數:"<<endl;

??? cin>>n;

??? cout<<endl<<"請輸入頂點信息(名稱):"<<endl;

??? for(k=0; k<n; k++)

??? {

??????? cin>>g.dj[k].name;

??????? g.dj[k].first=NULL;

??? }

??? cout<<endl<<"請輸入邊個數:"<<endl;

??? cin>>m;

??? char a,b;

?? int mark,i,j;

?? pbian p1,p2;

??? cout<<endl<<"請輸入邊關系:"<<endl;

??? for(k=0; k<m; k++)

??? {

??????? cin>>a>>b;

??????? i=getlc(g,a,n);

??????? j=getlc(g,b,n);

??????? p1=(pbian)malloc(sizeof(bian));

??????? p1->ivex=i;

??????? p1->jvex=j;

??????? p1->ilink=NULL;

??????? p1->jlink=NULL;

??????? p2=g.dj[i].first;

??????? if(p2==NULL)

????? ??? g.dj[i].first=p1;

??????? else

??????? {

??????????? mark=0;

??????????? while(mark==0)

? ??????????{

??????????????? if(p2->ivex==i&&p2->ilink==NULL) mark=1;

??????????????? else if(p2->jvex==i&&p2->jlink==NULL) mark=2;

??????????????? else if(p2->ivex==i) p2=p2->ilink;

??????????????? else p2=p2->jlink;

??????????? }

??????????? if(mark==1) p2->ilink=p1;

??????????? else p2->jlink=p1;

??????? }

??????? p2=g.dj[j].first;

??????? if(p2==NULL)

??????????? g.dj[j].first=p1;

??????? else

??????? {

??????????? mark=0;

??????????? while(mark==0)

??????????? {

??????????????? if(p2->ivex==j&&p2->ilink==NULL) mark=1;

??????????????? else if(p2->jvex==j&&p2->jlink==NULL) mark=2;

??????????????? else if(p2->ivex==j) p2=p2->ilink;

??????????????? else p2=p2->jlink;

??????????? }

??????????? if(mark==1) p2->ilink=p1;

??????????? else p2->jlink=p1;

??????? }

?? }

}

void disp(graph &g,int n)//顯示對應關系

{

??? cout<<"位置???? 名稱"<<endl;

??? for(int i=0; i<n; i++)

??????? cout<<i<<"??????? "<<g.dj[i].name<<endl;

}

void visit(graph &g,int v)//visit 函數

{

??? cout<<g.dj[v].name;

??? visited[v]=1;

}

void dfs(graph &g,int i)//dfs

{

??? if(visited[i]==0)

??? visit(g,i);

??? bian *p;

??? p=g.dj[i].first;

??? if(p==NULL)return ;

??? else

??? {

??????? int m=0;

??????? while(m==0)

??????? {

??????????? if(p->ivex==i)

??????????? {

??????????????? if(visited[p->jvex]==0)

???????? ???????{

??????????????????? dfs(g,p->jvex);

??????????????? }

??????????????? if(p->ilink==NULL)m=1;

??????????????? else p=p->ilink;

??????????? }

??????????? else

??????????? {

??????????????? if(visited[p->ivex]==0)

??????????????? {

????????????????? ??dfs(g,p->ivex);

??????????????? }

??????????????? if(p->jlink==NULL)m=1;

??????????????? else p=p->jlink;

??????????? }

??????? }//while

??? }//else

}

void bfs(graph &g)//bfs

{

??? int i,u;

??? bian *t;

??? cout<<"請輸入開始遍歷的點:"<<endl;

??? cin>>i;

??? que q;//隊列q

??? initq(q);

??? if(visited[i]==0)

??????? {

??????????? visit(g,i);

??????????? enq(q,i);

??????? }

??????????? while(q.f!=q.r)//隊不空

??????????? {

??????????? deq(q,u);

??????????? t=g.dj[u].first;

??????????? if(t==NULL)return;

??????????? int m=0;

??????????? while(m==0)

??????????? {

????????????? if(t->ivex==u)

????????????? {

??????????????? if(visited[t->jvex]==0)

??????????????? {

??????????????????? visit(g,t->jvex);

??????????????????? enq(q,t->jvex);

??????????????? }

??????????????? if(t->ilink==NULL)m=1;

??????????????? else t=t->ilink;

???????????? }

????????????? else

????????????? {

??????????????? if(visited[t->ivex]==0)

??????????????? {

??????????????????? visit(g,t->ivex);

??????????????????? enq(q,t->ivex);

??????????????? }

??? ????????????if(t->jlink==NULL)m=1;

??????????????? else t=t->jlink;

????????????? }

??????????? }//while

??????????? }//while

}

void clearr()

{

??? for(int i=0;i<maxnum;i++)

??? {

??????? visited[i]=0;

??? }

}

int main()

{

??? graph g;

??? int t=0;

??? int n;

??? creatgraph(g,n);

?? disp(g,n);

??? while(t!=3)

??? {

??????? cout<<endl<<"請選擇遍歷方式(1:DFS,2:BFS,3:QUIT):"<<endl;

??????? cin>>t;

??????? if(t==1)

??????? {

??????????? dfs(g,0);

??????????? clearr();

??????? }

??????? else if(t==2)

??????????? {

????? ??????????bfs(g);

??????????????? clearr();

??????????? }

??????? else if(t==3)

?????????? break;

??? }

??? return 0;

}

?

轉載于:https://www.cnblogs.com/wander-clouds/p/8443740.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的DFS BFS代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 男女视频在线观看免费 | 亚洲三区在线观看无套内射 | 久久久96人妻无码精品 | 日本视频在线观看免费 | 老司机午夜在线 | 色四月| 6080黄色 | 国产愉拍 | 欧美熟妇激情一区二区三区 | 欧美极品少妇xxxxⅹ裸体艺术 | 亚洲www | 国产精品欧美一区喷水 | 欧美专区视频 | 污污小视频 | 东北少妇bbbb搡bbb搡 | 免费萌白酱国产一区二区三区 | 国产精选在线 | 超碰综合在线 | 福利一区二区 | 香蕉av网 | 综合爱爱网 | 美女在线不卡 | 三级在线网站 | 国产大学生av | 性一区| 中国一级片黄色一级片黄 | 国产在线1 | 久久精品综合 | 国产情侣91 | 少妇性色av | 国产精品视频免费观看 | 亚洲国产成人精品女人久久久 | 91精品国产高清一区二区三区蜜臀 | 奇米综合网 | 小妹色播 | 91亚洲天堂| 奇米影视四色在线 | 欧美综合久久久 | 激情网页 | 六十路息与子猛烈交尾 | 色图插插插 | 新天堂av| 国语对白在线观看 | 国产日韩欧美精品一区 | 中文字幕第88页 | 欧美色图19p | 婷婷射丁香 | 成人免费视频国产 | 国产高潮流白浆喷水视频 | 波多野结衣中文字幕一区二区三区 | 日韩欧美字幕 | 亚洲啪啪av | 久久无码专区国产精品s | 最新地址在线观看 | 免费级毛片 | 日本人妻一区 | 国产wwwwwww| 欧美高清性xxxxhd | 久久精品国产一区 | 亚洲最大黄色 | 日韩在线观看你懂的 | 加勒比毛片| 免费看国产视频 | 中日韩在线观看 | 爱操综合 | 性爽爽 | 国产精品xxx视频 | 久久婷婷五月综合色国产香蕉 | 一区二区不卡在线 | 精品久| 性生活视频播放 | 亚洲色图一区二区三区 | 中文字幕av一区二区三区人妻少妇 | 久久亚洲精品视频 | 韩国视频一区二区三区 | 欧美精品久久久久久久多人混战 | 超碰在线网址 | 精品无码久久久久成人漫画 | а√在线中文网新版地址在线 | 萌白酱喷水视频 | 久久不卡免费视频 | 香蕉视频网址 | 日本三级片在线观看 | 一区二区三区欧美 | www.婷婷.com | 日日影院 | 久久成人综合网 | 国产一级做a爱片久久毛片a | 狠狠看| 九色在线观看视频 | 日本在线www | 国产69视频在线观看 | 成人福利视频在线 | 不卡av网 | 一级毛毛片 | 国产精品91一区二区 | 精品国产视频 | 91丨九色| 麻豆传媒网站入口 |