自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 二叉树层序遍历详解:用队列实现逐层访问

核心思想:利用队列的FIFO特性,保证节点按照层次顺序被访问时间复杂度:O(n),其中n是二叉树的节点数,每个节点都需要入队和出队各一次空间复杂度:O(n),最坏情况下(满二叉树),队列需要存储最后一层的所有节点。

2025-08-15 16:04:45 475

原创 二叉树的遍历(含递归原理分析)

首先,我们需要定义二叉树的节点结构。一个典型的二叉树节点应包含数据域、左孩子指针、右孩子指针,为了方便操作,我们还可以增加一个父节点指针。10// 定义元素类型为int// 二叉树节点结构// 节点数据// 左孩子指针// 右孩子指针// 父节点指针// node为结构体类型,tree为结构体指针类型代码说明我们使用typedef定义了elemtype作为元素类型,这里默认为int,方便后续修改为其他类型定义了节点的结构,包含数据域和三个指针域tree是。

2025-08-15 15:23:30 977

原创 c++顺序存储二叉树

100// 最大节点数// 顺序存储二叉树结构// 存储节点数据int length;// 当前节点个数data数组:用于存储二叉树的节点值length:记录当前二叉树中实际节点的数量我们约定用-1表示空节点(可根据实际需求修改)顺序存储二叉树通过数组实现,利用完全二叉树的节点编号特性来确定节点位置,具有访问速度快、实现简单等优点。本文详细讲解了其核心算法,包括初始化、插入和四种遍历方式的实现。需要注意的是,顺序存储二叉树更适合完全二叉树,对于普通二叉树可能会造成较大的空间浪费。

2025-08-14 22:16:42 795

原创 栈在递归函数中的应用

递归调用时:压栈(Push)每次函数调用(包括递归调用)时,计算机都会将当前函数的执行状态压入栈中。函数参数(如中的3局部变量(函数内部定义的变量)返回地址(当前函数执行到哪一行,以便递归返回后继续执行)递归返回时:弹栈(Pop)当函数达到基线条件开始返回结果时,计算机从栈顶弹出最近一次调用的状态,恢复上一层函数的执行环境,继续计算并返回。这种"调用时压栈、返回时弹栈"的机制,正是栈在递归中核心作用的体现。我们可以形象地将其称为"递归工作栈递归调用 = 栈的压栈操作(保存当前状态)

2025-08-07 16:39:38 485

原创 栈在表达式求值中的应用与 C++ 实现

栈通过 “后进先出” 的特性,完美解决了表达式求值中运算符优先级和括号嵌套的问题。本文实现的表达式求值器分为两个核心步骤:中缀转后缀(利用栈管理运算符)和后缀计算(利用栈管理操作数),逻辑清晰且易于理解。

2025-08-07 16:33:06 481

原创 C++ 栈实现括号匹配

栈作为一种经典的数据结构,在解决括号匹配这类具有 “嵌套特性” 的问题时展现出了独特优势。本文通过完整的代码实现和原理分析,希望能帮助大家理解栈的应用场景和括号匹配算法的设计思路。如有疑问或优化建议,欢迎在评论区交流!

2025-08-07 16:09:21 1796

原创 双端队列(Deque)的原理与C++实现详解

/ 队列中元素的类型// 双端队列的节点结构// 数据域// 前驱指针// 后继指针// 双端队列结构// 队头指针(指向头结点)PNode rear;// 队尾指针} Deque;DNode:双向链表节点,包含数据域data和两个指针域(prev和nextDeque:双端队列的管理结构,包含front(队头指针)和rear(队尾指针)使用typedef简化类型名,提高代码可读性双端队列作为一种灵活的数据结构,结合了栈和队列的特性,在需要从两端操作元素的场景中表现出色。

2025-08-04 20:01:23 2045

原创 队列的C++链式实现与详解

队列是一种重要的线性数据结构,它遵循"先进先出"(First In First Out, FIFO)的原则。如同日常生活中的排队现象,最早进入队列的元素将最早被取出。初始化队列(创建一个空队列)判断队列是否为空入队操作(在队列尾部插入元素)出队操作(从队列头部删除元素)获取队头元素等操作系统中的进程调度打印机的任务队列广度优先搜索(BFS)算法缓冲处理等根据存储方式的不同,队列可分为顺序队列(用数组实现)和链式队列(用链表实现)。本文将详细介绍链式队列的实现方法。

2025-08-04 15:08:53 407

原创 循环队列空间优化的两种方法

循环队列作为队列的经典顺序实现方式,在解决"假溢出"问题的同时,传统设计因需通过预留空间区分空满状态,导致空间利用率仅为n−1nn为队列容量)。本文系统分析size计数器与tag标记两种优化机制,从原理、实现逻辑、性能特性三个维度展开对比,论证其在提升空间利用率至100%的核心作用,并结合应用场景给出选择建议。

2025-08-03 16:09:00 918

原创 基于计数器的循环队列实现及优化

maxsize:定义队列的最大容量为10elemtype:元素类型别名,此处为int类型sq_queue:队列结构体,包含三个成员::存储队列元素的数组front:队头指针,指向队头元素rear:队尾指针,指向队尾元素的下一个位置size:计数器,记录当前队列中的元素个数关键改进:相比传统循环队列,本实现增加了size变量,用于直接记录队列中元素的数量。

2025-08-03 15:57:44 979

原创 循环队列的C++实现与解析(数组实现)

maxsize:定义队列的最大容量为10elemtype:元素类型定义,这里为int类型sq_queue:队列结构体,包含::存储队列元素的数组front:队头指针,指向队头元素rear:队尾指针,指向队尾元素的下一个位置循环队列是一种高效的队列实现方式,特别适合于已知最大容量且需要频繁进行入队和出队操作的场景。虽然存在一定的空间浪费和容量固定的限制,但在很多实际应用中,这些限制是可以接受的。

2025-08-03 15:41:02 580

原创 C++实现顺序栈及基本操作详解

栈(Stack)是一种在计算机科学与数据结构领域中极为基础且应用广泛的线性数据结构,其核心特性可以用 “先进后出”(Last In First Out,简称 LIFO)来精准概括。这种特性意味着,在栈这种结构中,最先进入的元素会被压在最底层,而后续加入的元素则依次叠加在其上方,当需要取出元素时,只能从最顶端(即最后加入的元素)开始取,直到栈被取空为止。从结构上看,栈属于线性结构的一种,这意味着栈中的元素之间存在明确的一对一前后关系,如同数组、链表一样,元素在逻辑上呈线性排列。

2025-07-31 15:54:41 1023

原创 C++实现双向链表及基本操作详解

/ 数据域// 指向前驱节点的指针// 指向后继节点的指针data:存储节点的数据prior:指向当前节点的前一个节点next:指向当前节点的后一个节点我们定义了node作为节点类型,LinkList和list作为指向节点的指针类型优点可以双向遍历,操作更灵活删除节点时不需要像单链表那样从头遍历查找前驱节点可以在O(1)时间复杂度内找到前驱节点缺点每个节点需要额外的空间存储前驱指针插入和删除操作需要维护更多的指针关系,实现稍复杂时间复杂度。

2025-07-20 14:29:30 771

原创 单链表的实现与操作

单链表是一种常见的线性数据结构,它通过节点存储数据元素,每个节点包含数据域和指针域:数据域存储元素值,指针域指向下一个节点的地址。与数组相比,单链表的优势在于插入和删除操作无需移动大量元素(时间复杂度为O(1)),但查找元素需要遍历链表(时间复杂度为O(n))。本文定义了节点结构体LNode,包含数据域data和指针域next,以及头指针类型LinkList等。工具类tool封装静态成员函数,实现日志打印、链表打印、节点插入、长度计算等辅助功能。

2025-07-16 23:19:25 915

原创 线性表顺序存储(SqList)实现详解

顺序表作为一种基于数组的线性数据结构,通过SqList结构体封装数据存储数组、最大容量和当前长度等信息,支持动态扩容、插入、删除、查找等功能。文中首先定义了数据结构及工具函数(用于日志输出和顺序表打印),随后逐一解析初始化(InitList)、动态扩容(IncreaseSize)、指定位置插入(ListInsert)、尾部追加(AddElem)、删除指定位置元素(DeleteElem)、按位查找(GetElem)和按值查找(LocateElem)等函数的实现细节,包括逻辑流程、优缺点及时间复杂度。

2025-07-12 20:17:47 1940 1

原创 在安卓Android页面上创建滑块

在Android界面中滑块提供了一种直观的方式来选择值,用户可以通过拖动滑块来快速调整设置。滑块可以在较小的空间内展示更多的信息,适合在移动设备上使用,避免占用过多的屏幕空间。并且滑块通常伴随着实时反馈,用户在调整时可以立即看到变化,可以帮助他们更好地理解选项的影响。对于需要精确设置的参数(如音量、亮度等),滑块允许用户进行细致的调整,提升操作的灵活性。

2024-12-20 00:14:45 718

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除