《数据结构与算法JavaScript描述》图和图算法(学习笔记C11)

手把手教你用 JavaScript 实现常见数据结构与算法 你是否遇到过这样的场景?写前端代码时想优化列表渲染性能,却不知道用链表还是数组更高效;面试时被问“用 JS 实现一个栈”,结果卡壳在 API 设计;想自己写个小框架,却对虚拟 DOM 的树结构遍历一头雾水?本文正是为解决这些问题而生:覆盖6 类核心数据结构(数组、链表、栈、队列、树、图)和5 大经典算法(排序、搜索、递归、动态规划、贪心),用 JS 代码+生活案例,让你“既能写代码,又懂为什么这么写”。本文从“生活场景”切入,先讲数据结构(像认识工具),再讲算法(像学习工具的用法),最后用实战案例串联。 阅读详情

相关概念

1.图由边的集合及顶点的集合组成。
2.顶点也有权重,也称为成本。
3.如果一个图的顶点对是有序的,则可以称之为有向图。有向图表明了顶点的流向。
4. 如果图是无序的,则称之为无序图,或无向图。
5.图中的一系列顶点构成路径,路径中所有的顶点都由边连接。
6.路径的长度用路径中第一个顶点到最后一个顶点之间边的数量表示。
7.由指向自身的顶点组成的路径称为环,环的长度为 0。
8.圈是至少有一条边的路径,且路径的第一个顶点和最后一个顶点相同。
9.无论是有向图还是无向图,只要是没有重复边或重复顶点的圈,就是一个简单圈。
10.除了第一个和最后一个顶点以外,路径的其他顶点有重复的圈称为平凡圈。
11.如果两个顶点之间有路径,那么这两个顶点就是强连通的,如果有向图的所有的顶点都是强连通的,那么这个有向图也是强连通的。

代码

// 图

// 保存顶点和边
function Vertex(label) {
    this.label = label
}

// 表示图的边的方法 1:邻接表或邻接表数组
// 表示图的边的方法 2:邻接矩阵

// 记录一个图表示了多少条边
function Graph(v) {
    this.vertices = v
    this.edges = 0
    // 记录顶点数量
    this.adj = []
    // 通过for循环为数组中的每个元素添加一个子数组
    // 来存储所有的相邻顶点
    // 并将所有元素初始化为空字符串
    for (var i = 0; i < this.vertices; ++i) {
        this.adj[i] = []
        this.adj[i].push('')
    }
    this.addEdge = addEdge
    this.showGraph = showGraph
}

// 将各元素加入各列表
// 最后边数+1
function addEdge(v, w) {
    this.ajd[v].push(w)
    this.adj[w].push(v)
    this.edges++
}

// 打印所有顶点和相邻顶点列表来显示图
function showGraph() {
    for (var i = 0; i < this.vertices; ++i) {
        console.log(i + '->')
        for (var j = 0; j < this.vertices; ++j) {
            if (this.adj[i][j] != undefined) {
                console.log('元素', this.adj[i][j] + ' ')
            }
        }
        console.log('-----')
    }
}
var g = new Graph(5);
g.addEdge(0,1);
g.addEdge(0,2);
g.addEdge(1,3);
g.addEdge(2,4);
g.showGraph();

未完待续

2024年最全数据结构与算法:终于可以用三种语言(C,C#,JavaScript,斩获offer 队列在C语言上只能自己构造,好在我们前面有链表、有顺序表,我们可以复制过来一个链表程序构造一个队列,于是从链表程序中复制过来b5.c或者b6.c即可,我们分析队列的ADT可知,最需要的队列功能需求是:修改的这个链表结点函数、仅仅加了第14行,在过去,所以结点删除后,最后的尾巴结点指针Tail所指的存储空间被释放,导致这个指针变量不可用,现在在结点个数为0的情况下,再次让尾结点指向头结点,保证下次进入链表的数据依然正确。补充main()函数,测试多批次进入队列、出队列,全部程序见B0.c。 阅读详情

相关推荐

JS数据结构与算法.pdf

JS数据结构与算法.pdf

数据结构与算法JavaScript描述pdf

链接:https://pan.baidu.com/s/1csu_3xCGYPWy1FDXDMVnnw 密码:cq3i 本书为完整版,以下为内容截图:  

qq_38460488的博客 1159

数据结构与算法-JavaScript描述

数据结构与算法-JavaScript描述!!

javascript 图(Graphs)算法与说明

图的介绍图是网络结构的抽象模型。图是一组由边连接的节点(或顶点)。学习图是重要的,因为任何二元关系都可以用图来表示。任何社交网络,例如Facebook、Twitter和Google plus,都可以用图来表示。飞机路线图就是图的实例之一: 图的相关术语通过下图来讲解说明: 由一条边连接在一起的顶点称为相邻顶点。比如,A和B是相邻的,A和D是相邻的,A和C是相邻的,A和E不是相邻的。 一个顶

rth362147773的博客 1204

快乐8 Ai大模型XGBoost LightGBM预测系统

随机森林回归:通过集成多个决策树模型,提高预测的准确性和稳定性。XGBoost:一种基于梯度提升的强大模型,擅长处理结构化数据。LightGBM:一种高效的基于决策树算法的分布式梯度提升框架,具有快速的训练速度和低内存消耗。高预测准确率:通过集成多种模型,提供更为精准的预测结果。多种预测方法:支持同尾号、重号、温号、连号和综合预测等多种预测策略,满足不同用户的需求。实时日志:在预测过程中,用户可以实时查看系统的预测进度和结果。

m0_72636583的博客 1万+

PVE 8.0 保姆级换源教程:从Debian到LXC仓库,一次搞定国内镜像(附弹窗去除)

本文提供PVE 8.0保姆级换源教程,涵盖从Debian基础源到LXC仓库的国内镜像配置,并附赠去除订阅弹窗的实用技巧。通过详细步骤和命令示例,帮助用户快速优化ProxmoxVE环境,提升下载速度并消除干扰提示,适用于虚拟化平台的高效管理。

weixin_33282146的博客 413

学习JavaScript数据结构与算法-----pdf 分享

百度网盘: 链接: https://pan.baidu.com/s/11kIdy7IQwX2uUgTyAAjblA 提取码: 1pm9 预览不了,下载的可能慢些这些问题出现时,点这里: 传送门 封面截图: 目录截图: ...

阿杰的程序人生 2005

KMS服务器一键部署与激活实战指南

本文详细介绍了KMS服务器的一键部署与激活实战指南,包括快速入门、安装步骤、服务管理技巧及常见问题排查。特别针对Windows和Mac用户提供了Office激活的具体操作步骤,并分享了高级配置与优化方案,帮助IT管理员高效管理批量授权激活。

weixin_29305313的博客 461

JavaScript语言的图算法

图由一组顶点和一组边组成。无向图(Undirected Graph):边没有方向,连接两个顶点的边不区分前后。有向图(Directed Graph):边有方向,连接两个顶点的边具有特定的方向。此外,边还可以带有权重(Weight),用于表示连接两个顶点的成本、距离等信息,这种图称为加权图(Weighted Graph)。图算法在JavaScript中的实现可以帮助我们开发出高效的应用程序,解决各种复杂问题。在实际开发中,掌握基本的图算法及其应用场景是非常重要的,能够为我们的项目提供更好的性能和用户体验。

2501_91324973的博客 510

计算机视觉三大顶会(ICCV/CVPR/ECCV)投稿指南与趋势解析

本文详细解析计算机视觉三大顶会(ICCV/CVPR/ECCV)的投稿指南与最新趋势。从基础认知到实战经验,涵盖时间线管理、选题策略、论文写作技巧及实验设计要点,帮助研究者提升投稿成功率。特别关注2024年技术融合、评估维度和伦理要求等前沿趋势,为计算机视觉领域的研究者提供实用建议。

weixin_29165725的博客 1841

从数据库到数据仓库:数据仓库导论

本文为数据仓库导论,旨在介绍数据仓库的基本理念和应用场景,帮助读者理解数据仓库的重要性及其在企业中的实际应用。

探索大数据世界 - 深入解析数据存储、分布式计算与人工智能 2784

资料分享:送你一本《数据结构与算法JavaScript描述》电子书!

数据结构 是掌握计算机编程必须具备的技能。通常情况下,我想掌握一门编程语言所用的方法就是利用这门语言把数据结构中线性表、栈、队列、字符串、动态数字、整数集合、树、图、搜索、排序等涉及的算法全部写一遍。写完之后,基本上就把这门语言搞定了。 今天给大家分享的就是我从网上找到的利用 JavaScript 语言来实现各种数据结构的算法,希望这本电子书对学习 JavaScript 想从事前端工作的读者有益。...

老马的程序人生 4380

【UG\NX二次开发】使用内部函数展开和折叠工序导航器

NX二次开发-群精选」专栏收录了那些曾散落在聊天对话框里的精彩的知识分享,这都是被遗落的宝贵财富。让我们一起向大佬学习,充满激情地进步,不断超越自己。底部联系方式,欢迎您加入一起交流。​下次一定。

王牌飞行员_里海的博客 820

数据结构与算法:终于可以用三种语言(C,C#,JavaScript)把图的广度优先遍历讲清楚了(推荐收藏)

文章目录邻接矩阵存储图的广度优先遍历过程分析C语言实现队列编程程序中加入图的处理函数结果的再次分析C#语言实现图的广度优先遍历、并显示广度优先遍历生成树JavaScript语言实现图的广度优先遍历、并显示广度优先遍历生成树 邻接矩阵存储图的广度优先遍历过程分析 对图1这样的无向图,要写成邻接矩阵,则就是下面的式子 一般要计算这样的问题,画成表格来处理是相当方便的事情,实际中计算机处理问题,也根本不知道所谓矩阵是什么,所以画成表格很容易帮助我们完成后面的编程任务。在我们前面介绍的内容中,有不少是借助着表格完

智慧空间实验室 5480

大语言模型原理与工程实践:手把手教你训练 7B 大语言模型 自动化训练框架

近年来,大语言模型(Large Language Models,LLMs)在自然语言处理领域取得了突破性进展。从GPT-3到ChatGPT,再到最新的GPT-4,这些模型展现出了惊人的语言理解和生成能力,引发了学术界和产业界的广泛关注。然而,训练如此庞大的模型不仅需要海量的数据和计算资源,还需要复杂的工程实践和优化技巧。本文将深入探讨大语言模型的原理,并以7B参数规模的模型为例,详细介绍如何构建一个自动化训练框架,使读者能够亲自动手训练自己的大语言模型。

AI天才研究院 1923

基于FPGA设计的信号分析仪(项目资料ID:28)

基于现场可编程门阵列(FPGA)设计的信号分析仪。该信号分析仪旨在实现对各类信号的精确分析,具备频率、幅度、相位等参数测量功能。通过采用 FPGA 作为核心处理单元,充分利用其并行处理能力和可重构特性,提高了系统的处理速度和灵活性。论文介绍了信号分析仪的总体设计方案,包括硬件电路设计和软件算法实现。

以培养嵌入式工程师为己任 1万+

数据结构与算法书籍推荐

学习数据结构与算法,还是很有必要看几本相关的书籍,但根据不同基础的人,合适看的书也不一样,因此,针对不同层次、不同语言的人,推荐几本市面上口碑不错的书。 1. 入门级 针对刚入门的同学,建议不要急着去看那些经典书,像《算法导论》、《算法》这些比较经典、权威的书。虽然书很好,但看起来很费劲,如果看不完,效果会很不好。所以建议先看两本入门级的趣味书: 《大话数据结构》 《算法图解》 大话数据结构 ...

张许平的博客 7万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Javascript描述-数据结构与算法

☆     数据结构是以某种形式将数据组织在一起的集合,它不仅存储数据,还支持访问和处理数据的操作。算法是为求解一个问题需要遵循的、被清楚指定的简单指令的集合。      下面是我总结整理出的关于数据结构与算法的相关内容,如有错误,欢迎交流。本文中对于方法的封装均采用JavaScript语言来实现。...

weixin_43689100的博客 402

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【数据结构与算法学习笔记】

本系列文章为作者学习数据结构与算法所作笔记,笔记参考陈斌老师的课程“数据结构与算法 Python版”和经典的数据结构教材《数据结构(C语言版)》(作者:严蔚敏),后期也参考了LetCode的题解。

floating_heart的博客 3101

JavaScript中有关数据结构和算法的最佳书籍

If you're trying to learn about data structures or algorithms, you're in luck - there are a lot of resources out there. 如果您想了解数据结构或算法,那么您很幸运-那里有很多资源。 Here are a few book recommendations - along with ...

cumi6497的博客 1929

《学习javascript数据结构与算法》图

图 邻接表 创建(队列+字典) 图是网络结构的抽象模型。图是一组由边连接的节点(或顶点)。学习图是重要的,因为任 何二元关系都可以用图来表示。 在着手实现算法之前,让我们先了解一下图的一些术语。 术语 解释 相邻顶点 由一条边连接在一起的顶点称为相邻顶点。 度 一个顶点的度是其相邻顶点的数量 路径 路径是顶点v1, v2,…,vk的一个连续序列 环 环也是一...

qq_37653449的博客 1126

JavaScript 数据结构与算法之美 - 强烈推荐 GitHub 上值得前端学习的数据结构与算法项目

前言 算法为王。 想学好前端,先练好内功,内功不行,就算招式练的再花哨,终究成不了高手;只有内功深厚者,前端之路才会走得更远。 强烈推荐 GitHub 上值得前端学习的数据结构与算法项目,包含 gif 图的演示过程与视频讲解。 GitHub 项目 数据结构与算法 关于数据结构与算法的 GitHub 项目,star 数由高到低排序。 javascript-algorithms(...

嘿嘿 1224

15-什么是图算法----JavaScript数据结构与算法学习

该系列博客索引目录:数据结构与算法—前端JavaScript学习 在上一个章节, 我们主要是认识一下图, 并且在程序中通过代码表示了图. 这一章, 我们来学习一些图相关的算法, 我们说过: 数据结构和算法是脱离不开关系的. 一. 图的遍历 和其他数据结构一样, 我们需要可以通过某种算法来遍历结构中每一个数据. 这样可以保证, 在我们需要时, 通过这种算法来访问某个顶点的数据以及它对应的边. 遍历的方式 图的遍历思想 图的遍历算法的思想在于必须访问每个第一次访问的节点, 并且追踪有哪些顶点还没

H.千面的博客 291

【数据结构与算法】多种语言(VB、C、C#、JavaScript)系列数据结构算法经典案例教程合集目录

文章目录1. 专栏简介2. 专栏地址3. 专栏目录 1. 专栏简介 2. 专栏地址 「 刘一哥与GIS的故事 」之《数据结构与算法》 3. 专栏目录 【经典回放】多种语言系列数据结构算法:二叉树(JavaScript版) 【经典回放】多种语言系列数据结构算法:二叉树(C#版) 【经典回放】多种语言系列数据结构算法:树(C#、JavaScript、VB6版) 【经典回放】多种语言系列数据结构线性表之一:顺序表 【经典回放】多种语言系列数据结构线性表之二:链表 【经典回放】多种语言系列数据结构算法:串(C

智慧空间实验室 814

《数据结构与算法JavaScript描述》队列(学习笔记C05)

队列相关概念代码 相关概念 队列是一种列表,不同的是队列只能在队尾插入元素,在队首删除元素。 队列是一种先进先出(First-In-First-Out,FIFO)的数据结构。 入队操作在队尾插入新元素,出队操作删除队头的元素。 peek()读取队头的元素。 代码 // 队列--先进先出--FIFO // 常规操作: // 入队 // 出队 // 返回队头元素 peek() // length // clear() // 底层实现结构--数组 // 数组: push() 末尾添加元素 // 数组: shi

yuhong's blog 240
上一篇: 《数据结构与算法JavaScript描述》二叉树和二叉查找树(学习笔记C10)
下一篇: Element+Vue (el-tooltip的content折行展示)
magic-fish
博客等级 码龄9年 3粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值