
数据结构
文章平均质量分 96
本专栏记录数据结构相关学习内容
_OP_CHEN
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据结构(C语言篇):(十)栈和队列OJ题详解
本文介绍了四个经典栈和队列OJ题的详细解析:1. 有效的括号:使用栈结构匹配括号对,通过入栈左括号、出栈匹配右括号的方式验证有效性。2. 用队列实现栈:通过两个队列交替转移元素,实现栈的先进后出特性。3. 用栈实现队列:利用两个栈(pushST和popST)的配合,实现队列的先进先出特性。4. 设计循环队列:通过数组和模运算实现循环空间利用,解决"假溢出"问题,并详细说明了空/满状态的判断方法。每个问题都包含思路分析、实现逻辑和完整代码示例,帮助深入理解栈和队列的数据结构特性及应用场景。原创 2025-09-02 11:17:35 · 638 阅读 · 0 评论 -
数据结构(C语言篇):(九)队列
本文系统介绍了队列数据结构及其实现方式。首先阐述了队列"先进先出"的核心特性,并对比了数组和链表两种实现方案的优劣。重点讲解了基于链表的队列实现,详细说明了初始化、入队、出队、判空、获取队头队尾元素、计算队列大小以及销毁队列等关键操作的代码实现逻辑。通过图示和示例代码展示了各函数的实现细节,强调了参数验证、内存管理、边界条件处理等重要编程实践。最后指出队列在任务调度、缓冲管理等场景的应用价值,并为后续栈和队列相关算法题目的讲解做了铺垫。原创 2025-09-01 11:16:37 · 612 阅读 · 0 评论 -
数据结构(C语言篇):(八)栈
本文介绍了栈这一基础数据结构及其实现。栈是一种遵循"后进先出"(LIFO)原则的线性表,支持压栈(Push)和出栈(Pop)操作。文章详细讲解了栈的两种实现方式(数组和链表),重点分析了基于数组的动态扩容实现方案。通过C语言代码示例,展示了栈的初始化、销毁、入栈、出栈、获取栈顶元素、判空和获取元素个数等核心操作的实现逻辑。其中,入栈操作涉及动态扩容机制,当空间不足时会以2倍容量进行扩展。原创 2025-08-31 10:00:45 · 756 阅读 · 0 评论 -
数据结构(C语言篇):(七)双向链表
本文详细介绍了双向链表的数据结构实现,包括核心概念、函数实现和性能分析。文章首先阐述了带头双向循环链表的结构特点,重点讲解了各功能函数的实现逻辑:LTBuyNode()创建节点、LTInit()初始化链表、LTPushBack()/LTPushFront()插入操作、LTPopBack()/LTPopFront()删除操作等关键函数。每个函数都配有图示分析和代码实现,特别强调了指针连接的更新机制。最后对比了顺序表和链表的存储特性、访问效率及适用场景,指出链表在动态插入删除方面的优势。原创 2025-08-30 10:50:54 · 1024 阅读 · 0 评论 -
数据结构(C语言篇):(六)单链表算法题(下)
本文介绍了三种单链表经典算法题解法:1. 回文链表判断 - 通过数组存储节点值,双指针比较;2. 相交链表检测 - 计算长度差对齐起点后同步遍历;3. 环形链表判断(I/II) - 快慢指针相遇法及环入口定位。重点分析了快慢指针的数学原理,证明不同步长下必然相遇的条件,并给出了完整的代码实现和示例执行流程。文章为单链表常见问题提供了系统性的解决方案。原创 2025-08-29 15:31:29 · 1170 阅读 · 0 评论 -
数据结构(C语言篇):(五)单链表算法题(上)
本文讲解单链表的四道经典算法题:1. 移除链表元素(203题):通过创建新链表,尾插非目标值节点;2. 反转链表(206题):使用三指针法逐个改变节点指向;3. 链表的中间节点(876题):采用快慢指针法,快指针每次走两步;4. 合并两个有序链表(21题):比较两链表节点,将较小值尾插至新链表。原创 2025-08-29 09:32:06 · 761 阅读 · 0 评论 -
数据结构(C语言篇):(四)链表
本文详细介绍了单链表的基本概念、结构实现与核心操作算法。单链表是一种非连续存储结构,通过指针链接实现元素的逻辑顺序。文章首先阐述了结点的组成和链表的性质,然后重点讲解了单链表的10种核心操作函数实现,包括插入、删除、查找等,并分析了各操作的时间复杂度。最后对链表的8种分类结构进行了概述,指出无头单向非循环链表和带头双向循环链表是最常用的两种结构。原创 2025-08-28 12:15:56 · 599 阅读 · 0 评论 -
数据结构(C语言篇):(三)顺序表算法题解析
这篇博客介绍了三种顺序表相关算法题的解法:1. 移除元素 - 使用双指针法(快慢指针)和优化版双指针法;2. 删除有序数组重复项 - 采用双指针法处理有序数组;3. 合并两个有序数组 - 使用逆向双指针避免元素覆盖。三种解法的时间复杂度均为O(n),空间复杂度为O(1),体现了双指针法在顺序表问题中的高效性。原创 2025-08-27 21:04:01 · 600 阅读 · 0 评论 -
数据结构(C语言篇):(二)顺序表
本文系统讲解了顺序表的实现原理与操作。顺序表是一种基于数组的线性数据结构,分为静态和动态两种类型。静态顺序表使用固定大小数组,存在空间浪费或不足问题;动态顺序表通过realloc动态扩容,更灵活实用。文章详细介绍了动态顺序表的8个核心操作函数:初始化(SLInit)、尾插(SLPushBack)、头插(SLPushFront)、尾删(SLPopBack)、头删(SLPopFront)、指定位置插入(SLInsert)、删除指定位置(SLErase)和查找(SLFind)。原创 2025-08-27 11:43:00 · 854 阅读 · 0 评论 -
数据结构(C语言篇):(一)算法复杂度
本文介绍了算法复杂度分析的关键概念。时间复杂度衡量算法执行时间随输入规模增长的变化趋势,空间复杂度反映算法内存占用情况。文章详细讲解了如何通过大O渐进表示法计算复杂度,包括保留最高阶项、去除常数系数等规则,并通过多个代码示例演示了常见时间复杂度(如O(1)、O(n)、O(n²)、O(logn))的计算方法。同时指出实际应用中主要关注最坏情况时间复杂度,并简要介绍了空间复杂度的分析思路。最后通过旋转数组题目展示了不同复杂度算法的实现对比。原创 2025-08-26 13:06:42 · 945 阅读 · 0 评论