数据结构
文章平均质量分 88
数据结构的深度学习
DDXYcoder
计科大一
GitHub:https://github.com/d2025440304-ops
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据结构——栈的概念理解与代码实现
栈是后进先出(LIFO)的受限线性表,仅允许在栈顶进行插入(Push)和删除(Pop)。本文采用动态数组实现,top 指向栈顶下一个空位(初始为0),元素个数即为 top。核心操作如入栈、出栈、取栈顶、判空等均达 O(1) 时间复杂度,通过扩容机制保证高效性。关键细节包括:空栈判断 top == 0,取栈顶需 arr[top-1],扩容失败应终止程序。栈广泛应用于括号匹配、表达式求值、深度优先搜索及函数调用等场景,是数据结构中的基础而核心的工具。原创 2026-09-18 10:37:16 · 60 阅读 · 0 评论 -
数据结构——队列的概念解析与核心代码
<think>我们只需要根据用户提供的长文生成一个≤150字的文章摘要。要求概括核心内容,包括队列的定义、特点、关键实现、复杂度、常见陷阱等。注意字数限制。综合提炼即可。</think>队列是先进先出的受限线性表,用带头尾双指针和size的链式结构实现,入队尾插、出队头删均O(1)。用size维护长度使判空求长O(1),且需注意只剩一个节点出队时置空尾指针、销毁时先存next再free等经典陷阱。整体适合链表实现,优于数组开头的队列。原创 2026-09-04 11:37:33 · 273 阅读 · 0 评论 -
手撕基础二叉树:从链式存储到层序遍历,彻底搞懂所有核心接口
本文系统介绍了二叉树的链式存储结构及其核心操作。首先阐述了二叉树的基本概念,包括普通二叉树、完全二叉树和满二叉树的区别。通过C语言代码展示了二叉树的创建过程,并构建了一个示例二叉树。重点讲解了二叉树的三种深度优先遍历方式(前序、中序、后序)及其递归实现原理,强调了理解递归的关键在于相信每个子调用都能正确完成工作。文章详细介绍了六个核心统计接口的实现,包括节点总数、叶子节点数、树高度、第k层节点数、查找节点和销毁操作。最后探讨了层序遍历的实现方法,指出需要借助队列数据结构来完成广度优先遍历。全文贯穿了二叉树"原创 2026-05-24 15:46:38 · 462 阅读 · 17 评论 -
数据结构:双向循环链表的全方位解构
本文解析了双向循环链表的核心思想与实现。通过引入哨兵节点和双向指针,解决了单链表查找前驱效率低的问题。关键点包括:1)使用自环哨兵节点统一空表处理;2)通过prev指针实现O(1)前驱访问;3)首尾相连形成循环结构。文章详细说明了节点定义、初始化、插入删除等操作的实现细节,特别强调了指针修改顺序的重要性,如"先改新节点再改旧节点"的原则。双向循环链表虽增加空间开销,但显著提升了头尾操作效率,是空间换时间的典型应用。原创 2026-07-31 13:39:57 · 427 阅读 · 0 评论 -
七大排序算法全解析:从插入到三路快排,手把手带你掌握核心思想与实战陷阱
本文介绍了6种经典排序算法及其实现:插入排序(O(n²),稳定)、希尔排序(O(n^1.3),不稳定)、冒泡排序(O(n²),稳定)、选择排序(O(n²),不稳定)、堆排序(O(nlogn),不稳定)和快速排序。每种算法都包含核心思想、代码实现和关键点分析:如插入排序适合小数据量,希尔是插入的优化版本;堆排序需注意建大根堆;选择排序存在"最大值被换走"的经典陷阱。文中还提供了交换函数和堆调整函数等辅助工具,强调算法选择需综合考虑数据规模、有序度、稳定性等因素,没有绝对最优解。所有实现均采用C语言,注重工程实原创 2026-06-30 17:09:45 · 382 阅读 · 0 评论 -
从 0->1 的用C语言手搓基于顺序表的通讯录项目(优化版)
本文介绍了基于顺序表实现通讯录项目的完整开发流程。首先通过C语言实现动态顺序表数据结构,包括初始化、增删查改等核心功能。然后基于顺序表框架构建通讯录系统,将联系人信息封装为结构体,实现添加、删除、修改、查询等功能。项目采用模块化设计,分为顺序表实现和通讯录实现两部分,共5个文件。文章详细说明了各个功能模块的实现逻辑,包括动态扩容策略、边界处理等关键点,并提供了测试方法和优化建议。最终实现了一个可在控制台运行的基础通讯录系统,同时也指出了界面美观性等方面的改进空间。原创 2026-01-01 18:14:39 · 950 阅读 · 0 评论 -
数据结构精讲:单链表从零到精通,一文搞定所有核心操作与高频考点
本文全面解析单链表数据结构,涵盖核心概念、关键操作实现及高频考点。单链表通过分散节点存储数据,每个节点包含数据和指向下一个节点的指针。相比顺序表,单链表插入/删除效率更高(O(1)),但随机访问需要O(n)时间。 文章重点讲解了二级指针的必要性:当需要修改头指针本身时,必须传递二级指针。详细实现了创建节点、打印、头插/尾插、头删/尾删等核心操作,并针对每种操作的特殊边界情况(空表/单节点/头尾节点)给出解决方案。 关键实现技巧包括:使用临时游标保护原头指针、头插尾插的顺序控制、双指针法找前驱节点、先存后删的原创 2026-07-31 13:52:19 · 293 阅读 · 1 评论
分享