数据结构
文章平均质量分 88
阳光开朗大男孩(๑•̀ㅂ•́)و✧
C++博主太难混了,转行做AI博主. Hi~ o(* ̄▽ ̄*)ブ
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
算法基础——二叉树
该博客围绕二叉树展开介绍。概念上,二叉树结点分左右孩子且顺序固定,特殊二叉树有满二叉树和完全二叉树。存储方式包括顺序存储和链式存储。以一个有n个结点的二叉树为案例,通过输入每个结点左右子结点编号建立二叉树。遍历方面,深度优先遍历有先序、中序、后序三种,分别给出代码实现及多组测试数据;宽度优先遍历则借助队列进行层序遍历,也给出了相应代码实现。原创 2025-03-29 23:32:47 · 568 阅读 · 0 评论 -
算法基础——树
该博客主要介绍树的相关知识。树是重要的非线性数据结构,涉及树的定义、基本术语、有序与无序树、有根与无根树等概念。存储方式有孩子表示法,包括用vector数组和链式前向星实现,vector数组虽耗时但一般不影响算法竞赛。遍历方法有深度优先遍历(DFS)和宽度优先遍历(BFS),并分别给出用vector数组和链式前向星存储时的实现代码,还展示了DFS和BFS处理特定输入数据的过程,此外还给出了斐波那契数列的递归实现代码。原创 2025-03-29 22:34:29 · 615 阅读 · 0 评论 -
算法基础——栈
这篇博客介绍了栈的概念与模拟实现及C++中stack相关内容。栈是只在一端进行数据插入和删除的线性表,插入删除端为栈顶,另一端为栈底。栈的模拟实现可通过创建数组和变量记录元素个数来完成,包含进栈、出栈、获取栈顶元素、判空、求元素个数等操作。在C++中,stack的创建为stack<T> st形式,T可为任意类型,还可使用size、empty、push、pop、top等操作,文末给出了相应测试代码。原创 2025-03-24 00:04:20 · 606 阅读 · 0 评论 -
手撕算法——顺序表
该博客主要介绍了多种算法问题及相应解法。询问学号问题可直接用 vector 或数组模拟;寄包柜问题可通过创建二维数组(空间复杂度过高)或vector<int> a[N]解决,并解释了vector<int> a[N]与vector<int> a(N)的区别。移动零和颜色分类问题利用双指针,将数组分块处理。合并两个有序数组有辅助数组和原地修改两种解法。The Blocks Problem 是模拟题,用 vector 模拟,包括查找位置、木块归位、移动木块等操作,并给出了各问题的参考代码。原创 2025-03-12 00:01:47 · 909 阅读 · 0 评论 -
手撕算法——链表
该博客介绍了四个与链表应用相关的问题。一是排队顺序问题,用静态链表存储,依题意修改指针域,根据给定头结点遍历输出。二是单向链表问题,属链表模板题,实现单链表,包括插入、查询、删除等操作。三是队列安排问题,因频繁在某位置前后插入元素,采用双向循环链表模拟,含初始化、插入及删除操作。四是约瑟夫问题,用循环链表模拟,不过代码未给出完整内容。原创 2025-03-23 15:15:22 · 349 阅读 · 0 评论 -
算法基础——链表
该博客介绍链表相关知识。链表是线性表的链式存储,元素存于任意存储单元,结点含数据域和指针域,有8种结构。单链表模拟实现分动态(用new和delete)和静态(用数组),包括定义、头插、遍历、按值查找(可哈希优化)、插入、删除等操作,尾插等操作因复杂度高没必要实现。双向链表在单链表基础上加前驱指针数组,有类似操作。循环链表中带头单向链表结构可成环。还介绍了动态链表list,包括创建、头插尾插、头删尾删等操作及其时间复杂度,并给出测试代码 。原创 2025-03-23 13:43:46 · 1082 阅读 · 0 评论 -
算法基础——顺序表
本文介绍顺序表相关知识。顺序表是线性表的顺序存储,通过数组实现,有静态和动态两种分配方式,前者无需动态管理内存但易溢出或浪费空间,后者可按需分配但代码复杂、时间消耗大,算法竞赛多采用静态方式。接着模拟实现静态顺序表,包括创建、增删查改、清空等操作,还介绍了测试代码。为解决多顺序表操作复杂问题,可利用C++结构体和类封装静态顺序表。动态顺序表因实现复杂且效率低,算法竞赛常用C++ STL的vector,介绍了其创建、成员函数(size、empty、begin/end等)及测试代码。原创 2025-03-19 01:08:19 · 870 阅读 · 0 评论 -
深入解析栈:数据存储的后进先出魔法
栈基础:介绍栈的压栈(插入)、出栈(删除)概念及结构定义。给出栈的初始化、销毁、入栈、出栈、取栈顶、判空、获有效元素个数等操作实现。有效括号问题:阐述通过遍历字符串,左括号入栈、右括号与栈顶匹配来判断括号有效性的思路,提及特殊情况处理。用栈实现队列:说明用两个栈模拟队列的思路,包括入队往一个栈插数据,出队视另一个栈空否进行不同操作,取队头、判队空及销毁队列的相关做法。原创 2024-11-15 17:25:06 · 806 阅读 · 0 评论 -
队列:仿若繁星列队,闪耀于数据苍穹
博客内容包括:队列基础:讲解队列概念(入队在队尾插入、出队在队头删除),展示其结构体定义及多种操作(初始化、入队、出队、判空、取队头 / 尾数据、获元素个数、销毁队列)的代码实现。用队列实现栈:阐述主要思路(入栈往非空队列插数据,出栈通过两队列转移数据实现先进后出)及对应代码。设计循环队列:说明主要思路(初始化数组空间、指针设置,插入数据判断满否及更新指针,依指针判断队列状态)及相关代码实现。原创 2024-11-15 17:13:19 · 1021 阅读 · 0 评论 -
一篇文章教会你算法复杂度(内附详细案例+实战)
算法在编写成可执⾏程序后,运⾏时需要耗费时间资源和空间(内存)资源。因此衡量⼀个算法的好 坏,⼀般是从时间和空间两个维度来衡量的,即和。主要衡量⼀个算法的运⾏快慢,⽽主要衡量⼀个算法运⾏所需要的额外空间。在计算机发展的早期,计算机的存储容量很⼩。所以对空间复杂度很是在乎。但是经过计算机⾏业的 迅速发展,计算机的存储容量已经达到了很⾼的程度。所以我们如今已经不需要再特别关注⼀个算法 的空间复杂度。原创 2024-10-11 20:19:56 · 1541 阅读 · 0 评论 -
从零到英雄:顺序表算法题的通关秘籍
定义两个变量指向数组第一个位置,判断nums[src]是否等于valsrc=source相等 dst=destination(1)相等 src++(2)不相等,nums[dst] = nums(src),src++,dst++原创 2024-10-15 23:13:43 · 813 阅读 · 0 评论 -
链上的诗行:单链表的优雅之旅
概念:链表是⼀种物理存储结构上⾮连续、⾮顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。淡季时⻋次的⻋厢会相应减少,旺季时⻋次的⻋厢会额外增加⼏节。只需要将⽕⻋⾥的某节⻋厢去掉/ 加上,不会影响其他⻋厢,每节⻋厢都是独⽴存在的。在链表⾥,每节是什么样的呢?原创 2024-11-10 14:10:49 · 748 阅读 · 0 评论 -
从零到精通:顺序表的探索者指南
线性表(linear list)是n个具有相同特性的数据元素的有限序列。线性表是⼀种在实际中⼴泛使 ⽤的 数据结构,常⻅的线性表:顺序表、链表、栈、队列、字符串...线性表在逻辑上是线性结构,也就说是连续的⼀条直线。但是在物理结构上并不⼀定是连续的, 线性 表在物理上存储时,通常以数组和链式结构的形式存储。原创 2024-10-14 16:23:17 · 706 阅读 · 0 评论
分享