logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

【数据结构】基于 Dijsktra 算法的最短路径求解

本实验实现了基于邻接矩阵的图结构表示,并采用Dijkstra算法求解图中两点间最短路径。实验内容包括:1) 构建有向图邻接矩阵(顶点数n和边数m由输入确定);2) 输入多组测试数据(每组包含城市列表、路径信息及查询起终点);3) 输出最短路径长度及具体路径。代码提供C++、Python和Java三种实现,核心逻辑包括:初始化邻接矩阵、定位顶点索引、执行Dijkstra算法(维护距离数组和路径矩阵)

文章图片
#算法#数据结构#c++ +2
【数据结构】基于Floyd算法的最短路径求解

本文介绍了使用Floyd算法求解有向图最短路径的实现方法。通过邻接矩阵表示图结构,算法采用三重循环动态更新各顶点间的最短距离。实验内容包括:1)输入城市编号和路径信息;2)初始化邻接矩阵;3)执行Floyd算法核心步骤;4)输出最短路径矩阵。提供了C++、Python和Java三种实现代码,均包含图结构定义、顶点定位、邻接矩阵构建和Floyd算法实现等模块。当输入城市数和路径数均为0时程序终止。

文章图片
#算法#数据结构#c++ +2
【数据结构】带头结点的单链表的基本操作

本文介绍了带头结点单链表的实现方法,包括结构定义和基本操作的算法设计。采用带头结点的单链表结构简化了边界操作,如空表插入和首元节点删除。详细说明了初始化、插入、删除、打印、求表长和销毁等核心操作的实现步骤及时间复杂度分析。初始化操作时间复杂度为O(1),插入和删除为O(n),打印和求表长为O(n),销毁为O(n)。提供了完整的C++、Python和Java实现代码,展示了链表创建、元素操作和内存释

文章图片
#数据结构#算法#链表 +3
【LeetCode刷题】翻转二叉树

本文介绍如何翻转二叉树,即交换树中每个节点的左右子节点。采用递归策略:处理空节点直接返回;非空节点交换左右子节点后递归处理子树。示例验证显示输入[4,2,7,1,3,6,9]翻转后为[4,7,2,9,6,3,1]。算法时间复杂度O(n),空间复杂度O(h)。提供Python实现代码,包括树构建和打印方法,以及LeetCode提交格式。核心思想是通过递归交换左右子树实现整棵树的翻转。

文章图片
#leetcode#算法#python
【数据结构】平衡二叉树(AVL树)

本文系统介绍了AVL树这一自平衡二叉搜索树的核心原理与实现。AVL树通过维护每个节点的平衡因子(左子树高度减右子树高度)在[-1,0,1]范围内,确保树高始终为O(logn)。当插入或删除操作导致失衡时,通过四种旋转操作(LL、RR、LR、RL)动态调整结构。文章详细阐述了AVL树的节点结构、旋转操作原理、插入删除的实现流程,以及查找、遍历等辅助功能。通过C++、Python、Java三种语言的完

文章图片
#数据结构#python#java +1
【数据结构】B*树

B*树是B树的优化版本,通过提高节点填充下限(≥2/3)和优先借键机制减少分裂次数,显著提升磁盘空间利用率。其核心特性包括:节点溢出时先向兄弟节点借键,仅当兄弟节点均满时才执行三分分裂;删除时优先借键修复欠载,否则合并三节点。相比B树,B树减少了约50%的分裂操作和磁盘IO,但范围查询性能较差(无叶子链表)。典型应用于海量离线存储系统,不适合高频范围查询的在线数据库。代码实现展示了4阶B*树的插入

文章图片
#数据结构#b树#算法 +1
【数据结构】B-Tree(B 树)

本文系统介绍了B树的核心概念与实现原理。B树是一种多路平衡查找树,专为磁盘IO优化设计,通过节点存储多个索引大幅减少磁盘访问次数。文章详细解析了B树的阶数定义、节点结构、四大核心操作(查找/插入/删除/分裂合并)及其C++实现,包括基础结构体、查询函数、插入模块、删除模块和遍历函数。重点阐述了B树适合作为磁盘索引的底层原理:减少IO次数、磁盘页对齐设计和天然平衡特性。通过4阶B树的完整插入示例演示

文章图片
#数据结构#b树#c++
【LeetCode刷题】二叉树的层序遍历

本文介绍了二叉树的层序遍历(BFS)实现方法。通过队列按层处理节点,首先将根节点入队,然后逐层遍历:取出当前层节点并记录值,将其子节点入队用于下一层处理。时间复杂度为O(n),空间复杂度为O(n)。提供了Python实现代码,包含TreeNode类定义、层序遍历函数和测试用例,验证了示例输入的正确输出。该方法适用于LeetCode相关题目,能有效实现二叉树的逐层遍历。

文章图片
#leetcode#算法#数据结构 +1
【LeetCode刷题】K 个一组翻转链表

题目要求将链表每k个节点一组进行翻转,不足k个的保持原序。使用哨兵节点简化处理,通过分组定位、子链表翻转和组间连接实现。时间复杂度O(n),空间复杂度O(1)。Python代码通过迭代翻转每组链表,并处理边界条件,测试案例验证了正确性。例如,输入[1,2,3,4,5]和k=2时输出[2,1,4,3,5]。该方法高效且符合原地操作要求。

文章图片
#leetcode#链表#算法 +2
【数据结构】最短路径的求解

本文通过具体例题对比了迪杰斯特拉算法和弗洛伊德算法求解最短路径的过程。迪杰斯特拉算法采用贪心策略,逐步确定单源点到其他顶点的最短路径(时间复杂度O(n²)),但不能处理负权边。弗洛伊德算法通过动态规划求解所有顶点对的最短路径(时间复杂度O(n³)),能处理负权边但不支持负权环。两种算法在适用场景、处理能力和实现方式上存在显著差异:迪杰斯特拉适合单源点问题,弗洛伊德适用于多源点问题且实现更简洁。文中

文章图片
#数据结构#动态规划#ipython
    共 195 条
  • 1
  • 2
  • 3
  • 20
  • 请选择