数据结构198-图论-广度优先搜索实现代码

简介: 数据结构198-图论-广度优先搜索实现代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
          function Queue(){
            this.items=[]
            Queue.prototype.push=function(element){
                this.items.push(element)
            }
            Queue.prototype.shift=function(){
               return this.items.shift()
            }
            Queue.prototype.front=function(){
                return this.items[0]
            }
            Queue.prototype.isEmpty=function(){
                return this.items.length==0
            }
            Queue.prototype.size=function(){
                return this.items.length
            }
            Queue.prototype.toString=function(){
                var resultString=""
                for(var i=0;i<this.items.length;i++){
                    resultString+=this.items[i]+""
                }
                return resultString
            }
        }
        function Graph(){
            this.vertexes=[] //顶点
            this.edges=new Dictionay() //边
            Graph.prototype.addVertexts=function(v){
                this.vertexes.push(v)
                this.edges.set(v,[])
            }
            Graph.prototype.addEdge=function(v1,v2){
                this.edges.get(v1).push(v2)
                this.edges.get(v2).push(v1)
            }
            Graph.prototype.toString=function(){
                var resultString=""
                for(var i=0;i<this.vertexes.length;i++ ){
                    resultString+=this.vertexes[i]+"->"
                    var vEdges=this.edges.get(this.vertexes[i])
                    for(var j=0;j<vEdges.length;j++){
                        resultString+=vEdges[j]+" "
                    }
                    resultString+="\n"
                }
                return resultString
            }
            //初始化状态颜色
            Graph.prototype.initializeColor=function(){
                var colors=[]
                for(var i=0;i<this.vertexes.length;i++){
                    colors[this.vertexes[i]]="while"
                }
                return colors
            }
            //
            Graph.prototype.bfs=function(initV,handler){
                //初始化样式
                var colors=this.initializeColor()
                //创建队列
                var queue=new Queue()
                //将顶点加入到队列中
                queue.enqueue=(initV)
                //
                while(!queue.isEmpty()){
                    //从队列取出一个面点
                    var v=queue.dequeue()
                    //获取和顶点相邻的另外顶点
                    var vList=this.edges.get(v)
                    //将v的颜色设置未灰色
                    colors[v]="gray"
                    //遍历所有的顶点
                    for(var i=0;i<vList.length;i++){
                        var e=vList[i]
                        if(colors[e]=="white"){
                            colors[e]="gray"
                            queue.enqueue(e)
                        }
                    }
                    //v已经被探测
                    handler(v)
                    //颜色设置未黑色
                    colors[v]="black"
                }
            }
        }
    </script>
</body>
</html>
相关文章
|
4月前
|
算法 开发者 计算机视觉
燃爆全场!Python并查集:数据结构界的网红,让你的代码炫酷无比!
在编程的世界里,总有一些数据结构以其独特的魅力和高效的性能脱颖而出,成为众多开发者追捧的“网红”。今天,我们要介绍的这位明星,就是Python中的并查集(Union-Find)——它不仅在解决特定问题上大放异彩,更以其优雅的设计和强大的功能,让你的代码炫酷无比,燃爆全场!
59 0
|
3月前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
101 1
|
4月前
|
存储 Java 开发者
Java中的Map接口提供了一种优雅的方式来管理数据结构,使代码更加清晰、高效
【10月更文挑战第19天】在软件开发中,随着项目复杂度的增加,数据结构的组织和管理变得至关重要。Java中的Map接口提供了一种优雅的方式来管理数据结构,使代码更加清晰、高效。本文通过在线购物平台的案例,展示了Map在商品管理、用户管理和订单管理中的具体应用,帮助开发者告别混乱,提升代码质量。
50 1
|
4月前
|
存储 算法 索引
HashMap底层数据结构及其增put删remove查get方法的代码实现原理
HashMap 是基于数组 + 链表 + 红黑树实现的高效键值对存储结构。默认初始容量为16,负载因子为0.75。当存储元素超过容量 * 负载因子时,会进行扩容。HashMap 使用哈希算法计算键的索引位置,通过链表或红黑树解决哈希冲突,确保高效存取。插入、获取和删除操作的时间复杂度接近 O(1)。
47 0
|
4月前
05(数据结构考研)树相关操作代码
05(数据结构考研)树相关操作代码
41 0
|
4月前
|
算法
04(数据结构考研)串相关操作代码
04(数据结构考研)串相关操作代码
28 0
|
4月前
03(数据结构考研)队列相关操作代码
03(数据结构考研)队列相关操作代码
51 0
|
4月前
02(数据结构考研)栈相关操作代码
02(数据结构考研)栈相关操作代码
21 0
|
4月前
01(数据结构考研)线性表相关操作代码
01(数据结构考研)线性表相关操作代码
108 0
|
4月前
|
机器学习/深度学习 存储 算法
数据结构与算法——BFS(广度优先搜索)
数据结构与算法——BFS(广度优先搜索)