下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、利用鄰接表存儲無向圖 ,并深度遍歷和廣度遍歷圖#include <stdio.h>#include <iostream.h>#include <malloc.h>#define max 20int visitedmax;int w;typedef struct arcnodeint adjvex;/該弧指向的頂點的位置struct arcnode *nextarc;/ 弧尾相同的下一條弧 char *info;/ 該弧信息arcnode;typedef struct vnodechar data;/ 結(jié)點信息arcnode *firstarc;/指想第一條依
2、附該結(jié)點的弧的指針vnode,adjlist;typedef structadjlist verticesmax;int vexnum,arcnum;int kind;algraph;typedef struct qnodeint data;struct qnode *next; qnode,*queueptr;typedef structqueueptr front;queueptr rear;linkqueue;void dfs(algraph gra,int i);int creatadj(algraph &gra)/用鄰接表存儲圖int i,n,m;char cha;cout&
3、lt;<" 輸如結(jié)點個數(shù): " cin>>n;cout<<" 輸如弧個數(shù): "cin>>m; arcnode *arc,*tem;for(i=0;i<n;i+)cout<<" 輸如結(jié)點信息: "cin>>gra.verticesi.data;gra.verticesi.firstarc=NULL;for(i=0;i<n;i+)cout<<" 結(jié)點 "<<i<<" 是否有出度: "ci
4、n>>cha;if(cha='y') arc=(arcnode *)malloc(sizeof(arcnode);cin>>arc->adjvex;gra.verticesi.firstarc=arc;cout<<" 是否還有出度: " cin>>cha;while(cha='y')tem=(arcnode *)malloc(sizeof(arcnode); cin>>tem->adjvex;arc->nextarc=tem;arc=tem;cout<<
5、" 是否還有出度: " cin>>cha; arc->nextarc=NULL; if(cha='n') continue;gra.vexnum=n;gra.arcnum=m;return 1;int firstadjvex(algraph gra,vnode v)/ 返回依附頂點 V 的第一個點/即以 V 為尾的第一個結(jié)點return v.firstarc->adjvex;返回依附頂點V的相對于W的int nextadjvex(algraph gra,vnode v,int w)/ 下一個頂點 arcnode *p; p=v.fir
6、starc; while(p!=NULL) if(p->adjvex!=w) p=p->nextarc; if(p->adjvex=w&&p->nextarc!=NULL) return p->nextarc->adjvex; else return 0; int initqueue(linkqueue &q)/ 初始化隊列 q.rear=(queueptr)malloc(sizeof(qnode); q.front=q.rear;if(!q.front) return 0; q.front->next=NULL;return
7、1;int enqueue(linkqueue &q,int e)/ 入隊 queueptr p; p=(queueptr)malloc(sizeof(qnode);if(!p) return 0; p->data=e; p->next=NULL; q.rear->next=p; q.rear=p; return 1;int dequeue(linkqueue &q,int &e)/ 出隊 queueptr p;if(q.front=q.rear)return 0;p=q.front->next;e=p->data;q.front->
8、next=p->next;if(q.rear=p)q.rear=q.front;free(p);return 1;int queueempty(linkqueue q)/ 判斷隊為空if(q.front=q.rear)return 1;return 0;void bfstra(algraph gra,vnode v)/ 廣度優(yōu)先遍歷int i,e;linkqueue q;for(i=0;i<gra.vexnum;i+)visitedi=0;initqueue(q);for(i=0;i<gra.vexnum;i+)if(!visitedi)visitedi=1;cout<
9、<gra.verticesi.data;enqueue(q,i);while(!queueempty(q)dequeue(q,e);for(w=firstadjvex(gra,gra.verticese);w>0;w=nextadjvex(gra,gra.ve rticese,w)if(!visitedw)visitedw=1;cout<<gra.verticesw.data;enqueue(q,w);深度優(yōu)先遍歷int dfstra(algraph gra,vnode v)/ int i;for(i=0;i<gra.vexnum;i+)visitedi=0;for(i=0;i<gra.vexnum;i+)if(!visitedi)dfs(gra,i);return 1;void dfs(algraph gra,int i)visitedi=1;cout<<gra.verticesi.data;for(w=firstadjvex(gra,gra.verticesi);w>0;w=nextadjvex(gra,gra.vert icesi,w)if(!visitedw)dfs(gra,w);void main()algraph
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度山砂項目砂石資源采購合同6篇
- 2025年房產(chǎn)買賣居間服務(wù)合同規(guī)范樣本
- 動漫教育發(fā)展:2025年《動漫欣賞課》課件展示2篇
- 2025年度個人汽車交易合同范本2篇
- 2025年度納稅擔保期限與稅務(wù)合規(guī)合同
- 2025年度個人與公司間的借款逾期罰息合同3篇
- 二零二五年度生態(tài)餐飲原物料綠色配送服務(wù)合同3篇
- 2025年度個人房屋租賃合同范本(含租金支付方式)2篇
- 2025年度新型電梯銷售及居間服務(wù)合同協(xié)議書范本3篇
- 2025年度門面租賃合同租賃雙方權(quán)利義務(wù)協(xié)議4篇
- 冷庫制冷負荷計算表
- 肩袖損傷護理查房
- 設(shè)備運維管理安全規(guī)范標準
- 辦文辦會辦事實務(wù)課件
- 大學宿舍人際關(guān)系
- 2023光明小升初(語文)試卷
- GB/T 14600-2009電子工業(yè)用氣體氧化亞氮
- GB/T 13234-2018用能單位節(jié)能量計算方法
- 申請使用物業(yè)專項維修資金征求業(yè)主意見表
- 房屋買賣合同簡單范本 房屋買賣合同簡易范本
- 無抽搐電休克治療規(guī)范
評論
0/150
提交評論