数据结构之深度优先与广度优先算法
2017-07-25 14:09
162 查看
图:
邻届表表示图:
代码:
邻届表表示图:
代码:
package com.tu; /** * Created by lcc on 2017/7/25. */ public class DFSyuBFS { public static void main(String[] args) { DFSyuBFS dFSyuBFS = new DFSyuBFS (); Linjiebiao linjiebiao = dfs.getShuJu(); dFSyuBFS .Dfs(linjiebiao,2 ); System.out.println("--------"); dFSyuBFS .bfs(linjiebiao,2 ); } int[] visited = new int[100]; void bfs(Linjiebiao linjiebiao, int v) { int changdu =linjiebiao.n; ArcNode p; int w; int [] queue =new int [changdu]; int front =0; int rear =0; int [] visistedqueue = new int[changdu]; System.out.println(v); visistedqueue[v] =1 ; rear = (rear+1)%changdu; queue[rear] =v; while (front !=rear) { front =(front+1)%changdu; w=queue[front]; p=linjiebiao.adjlist[w].fistarc; while (p!=null) { if(visistedqueue[p.adjvex] ==0) { System.out.println(p.adjvex); visistedqueue[p.adjvex] =1; rear =(rear+1)%changdu; queue[rear] =p.adjvex; } p=p.nextarc; } } } void Dfs(Linjiebiao linjiebiao, int i) { ArcNode p; int w; visited[i] = 1; System.out.println(i); p = linjiebiao.adjlist[i].fistarc; while (p != null) { w = p.adjvex; if (visited[w] == 0) { Dfs(linjiebiao, w); } p = p.nextarc; } } //临界表表示图 Linjiebiao getShuJu() { Linjiebiao linjiebiao = new Linjiebiao(); linjiebiao.e = 7; linjiebiao.n = 5; Vnode vnode = new Vnode(); linjiebiao.adjlist[0] = vnode; vnode.data = "1"; ArcNode arcNode = new ArcNode(); ArcNode arcNode2 = new ArcNode(); ArcNode arcNode3 = new ArcNode(); vnode.fistarc = arcNode; arcNode.adjvex = 1; arcNode.nextarc = arcNode2; arcNode2.adjvex = 3; arcNode2.nextarc = arcNode3; arcNode3.adjvex = 4; arcNode3.nextarc = null; Vnode vnode11 = new Vnode(); linjiebiao.adjlist[1] = vnode11; vnode11.data = "2"; ArcNode arcNode11 = new ArcNode(); ArcNode arcNode211 = new ArcNode(); ArcNode arcNode311 = new ArcNode(); vnode11.fistarc = arcNode11; arcNode11.adjvex = 0; arcNode11.nextarc = arcNode211; arcNode211.adjvex = 2; arcNode211.nextarc = arcNode311; arcNode311.adjvex = 3; arcNode311.nextarc = null; Vnode vnode22 = new Vnode(); linjiebiao.adjlist[2] = vnode22; vnode22.data = "3"; ArcNode arcNode22 = new ArcNode(); ArcNode arcNode222 = new ArcNode(); ArcNode arcNode322 = new ArcNode(); vnode22.fistarc = arcNode22; arcNode22.adjvex = 1; arcNode22.nextarc = arcNode222; arcNode222.adjvex = 3; arcNode222.nextarc = arcNode322; arcNode322.adjvex = 4; arcNode322.nextarc = null; Vnode vnode33 = new Vnode(); linjiebiao.adjlist[3] = vnode33; vnode22.data = "4"; ArcNode arcNode33 = new ArcNode(); ArcNode arcNode233 = new ArcNode(); ArcNode arcNode333 = new ArcNode(); ArcNode arcNode433 = new ArcNode(); vnode33.fistarc = arcNode33; arcNode33.adjvex = 0; arcNode33.nextarc = arcNode233; arcNode233.adjvex = 1; arcNode233.nextarc = arcNode333; arcNode333.adjvex = 2; arcNode333.nextarc = arcNode433; arcNode433.adjvex = 4; arcNode433.nextarc = null; Vnode vnode44 = new Vnode(); linjiebiao.adjlist[4] = vnode44; vnode44.data = "5"; ArcNode arcNode44 = new ArcNode(); ArcNode arcNode244 = new ArcNode(); ArcNode arcNode344 = new ArcNode(); vnode44.fistarc = arcNode44; arcNode44.adjvex = 0; arcNode44.nextarc = arcNode244; arcNode244.adjvex = 2; arcNode244.nextarc = arcNode344; arcNode344.adjvex = 3; arcNode344.nextarc = null; return linjiebiao; } }
相关文章推荐
- 数据结构——图的深度/广度优先遍历
- 数据结构4-深度优先搜索和广度优先搜索
- 数据结构:图的遍历--深度优先、广度优先
- 数据结构:图的遍历--深度优先、广度优先
- 对树形结构数据进行广度优先/深度优先遍历
- 【数据结构实验】图的深度优先/广度优先遍历
- 数据结构之深度优先,广度优先遍历
- 看数据结构写代码(40) 无向图的深度优先生成树与广度优先生成树
- 数据结构图的数组表示法以及深度,广度遍历
- 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
- 【数据结构】图的遍历方法 深度优先遍历和广度优先遍历
- 数据结构图的基本操作--邻接表法(不包括深度、广度算法)
- 【数据结构】图的遍历方法 深度优先遍历和广度优先遍历
- 数据结构中的赫夫曼树编码,KMP算法,图的深度优先遍历和广度优先遍历
- 广度优先遍历,深度优先遍历,拓扑排序(十字链表存储结构)
- 数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历
- 暑假集训 8.15 数据结构实验之图论二:基于邻接表的广度优先搜索遍历 sdutoj2142
- 数据结构实践——迷宫问题之图深度优先遍历解法
- 数据结构图的运算(深度优先)
- LeetCode 102. Binary Tree Level Order Traversal 树的广度优先遍历 辅助数据结构队列