Java数据结构与算法《十九》图的搜索
来源:互联网 发布:易语言天龙八部源码 编辑:程序博客网 时间:2024/05/16 07:57
图的搜索是指从一个指定顶点可以到达哪些顶点2.搜索的分类深度优先搜索DFS广度优先搜索BFS深度优先搜索规则如果可能 访问一个临街的未访问过的顶点 标记它 把它放入栈中当不能执行规则1时候 如果栈不能空 就从栈弹出一个顶点3.如果不能执行规则1和规则2是就完成了整个搜索过程深度优先搜索代码实现广度搜索优先规则 从队列的头部进行查看 尾部进行插入1.访问下一个临街的为访问过的顶点 那么这个顶点必须是当前节点的临界点 标记它 并把它插入到队列当中2.如果无法执行规则1 那么久从队列头取出一个顶点 并使其作为当前顶点3.当前队列不能我空 执行规则2时 就完成了整个搜索过程
//顶点类public class Vertex{ private char label; public boolean wasVisited; public Vertex(){ this.label=label; }}//图public class Graph{ //顶点数组 private Vertex[] vertexList; //邻接矩阵 private int[][] adjMat; //当前顶点 private int nVertex; //栈 private MyStack stack; public Graph(){ vertexList = new Vertex[maxSize]; adjMat = new int[maxSize][maxSize]; for(int i=0;i<maxSize;i++){ for(int i=0;j<maxSize;i++){ adjMat[i][j]=0; } } nVertex =0; } //添加顶点 public void addVertex(char label){ vertexList[nVertex++] = new vertexList(label); } //添加边 public void addEdge(int start,int end){ adjMat[start][end] =1; adjMat[end][start]=1; } public int getadjUnvisiedVertex(int v){ for(int i=0;i<nVertex;i++){ if(adj[v][i]==1&&vertexList[i].wasVisited==true){ return i; } } return -1; } //图的搜索 public void dfs(){ //首先访问0号顶点 vertexList[0].wasVisited =true; //显示该顶点 displayVertex(0); //压入栈中 stack.push(0); while(!stack.isEmpty){ //获得一个为访问过的邻接点 int v =getadjUnvisiedVertex((int)stack.peek()); if(v==-1){ //弹出一个顶点 stack.pop(); }else{ vertexList[v].wasVisited=true; displayVertex(v); stack.push(v); } } //搜索完成以后 要将访问信息修改 for(int i=0;i<nVertex;i++){ vertexList[i].wasVisited=false; } } public void displayVertex(int v){ System.out.println(vertexList[v].label); }}
0 0
- Java数据结构与算法《十九》图的搜索
- 数据结构与算法8:图的深度优先搜索
- 数据结构与算法9: 图的广度优先搜索
- 数据结构与算法(C语言版)__图的搜索
- 算法与数据结构 - 搜索算法
- java数据结构 图的搜索
- java数据结构与算法-图简介、图搜索、图最小生成树
- Java数据结构与算法--算法的概述
- 数据结构与基本算法的学习笔记-顺序搜索-2
- 数据结构与算法之四 搜索算法
- Java数据结构与算法--数据结构和算法的作用
- 数据结构与算法分析笔记与总结(java实现)--二叉树20:二叉搜索树的后序遍历序列
- 数据结构与算法分析笔记与总结(java实现)--二叉树21:二叉搜索树的第k个结点
- 数据结构(十九)图的存储结构
- 《数据结构与算法》学习笔记28 图搜索
- java数据结构与算法
- Java数据结构与算法
- 《JAVA数据结构与算法》
- springmvc使用junit4实现单元测试
- L3-013. 非常弹的球
- Java数据结构与算法《十八》图
- Android兼容性测试GTS-环境搭建、测试执行、结果分析
- 一次HTTP请求过程
- Java数据结构与算法《十九》图的搜索
- java数据结构和算法
- 【LeetCode】312. Burst Balloons
- 5款优秀的GitHub开源安全工具
- Java数据结构与算法《二十》最小生成树
- vim配置
- Android兼容性测试CTS Verifier-环境搭建、测试执行、结果分析
- BZOJ 3786 星系探索
- 你不可不知的10个Github功能