数据结构
文章平均质量分 81
far away4002
The road may be long, but it will lead to the destination; the task may be difficult, but it will surely be accomplished.
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据结构————栈的讲解(超详细!!!)
栈是一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作,进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵循后进先出(先进后出)原则。特性与栈的结构有关。原创 2024-09-11 22:20:04 · 1434 阅读 · 0 评论 -
Leetcode算法题(移除链表中的元素)
思路1:创建一个新的带头链表 (newhead),遍历头结点对应的值分别于x进行比较,将不等于x的节点尾插到新的带头链表中,返回新的带头链表的下一个节点。题目如下:思路1:创建一个新的带头链表 (newhead),遍历头结点对应的值分别于x进行比较,将不等于x的节点尾插到新的带头链表中,返回新的带头链表的下一个节点。原创 2024-07-15 21:54:46 · 490 阅读 · 1 评论 -
初阶数据结构(顺序表的实现)
1. 线性表1. 线性表线性表是(linear list)n个具有相同特性的数据元素的有限队列。线性表是一种在实际广泛应用的的数据结构,常见的线性表:顺序表,链表,栈,队列,字符串。。。线性表在逻辑结构上是连续的。但在物理结构上不一定连续,线性表在物理上存储时,通常以数组和链表的形式存储。2. 顺序表2.1 概念与结构概念:顺序表是用一段物理地址连续的存储单元一次存储数据元素的线性结构,一般采用与数组类似的存储方式。顺序表与数组的区别。原创 2024-07-11 14:34:34 · 931 阅读 · 27 评论 -
【初阶数据结构篇】单链表OJ题(下篇)
须知💬 欢迎讨论:如果你在学习过程中有任何问题或想法,欢迎在评论区留言,我们一起交流学习。你的支持是我继续创作的动力!你们的支持是我不断进步的动力!🚀 分享给更多人:如果你觉得这篇文章对你有帮助,欢迎分享给更多对C++感兴趣的朋友,让我们一起进步!原创 2024-11-20 16:42:36 · 1271 阅读 · 9 评论 -
【初阶数据结构篇】单链表OJ题(上篇)
须知💬 欢迎讨论:如果你在学习过程中有任何问题或想法,欢迎在评论区留言,我们一起交流学习。你的支持是我继续创作的动力!你们的支持是我不断进步的动力!🚀 分享给更多人:如果你觉得这篇文章对你有帮助,欢迎分享给更多对C++感兴趣的朋友,让我们一起进步!前言:本篇文章是一篇训练题,以锻炼自己的思维为主,题目相对较简单,便于小白入门算法,接下来将跟着小编探索算法在解题中的应用。1. 链表分割。原创 2024-11-19 18:21:40 · 856 阅读 · 4 评论 -
【初阶数据结构篇】队列的实现(赋源码)
须知💬 欢迎讨论:如果你在学习过程中有任何问题或想法,欢迎在评论区留言,我们一起交流学习。你的支持是我继续创作的动力!你们的支持是我不断进步的动力!🚀 分享给更多人:如果你觉得这篇文章对你有帮助,欢迎分享给更多对C++感兴趣的朋友,让我们一起进步!原创 2024-11-19 15:35:37 · 805 阅读 · 0 评论 -
【初阶数据结构篇】双向链表的实现(赋源码)
须知💬 欢迎讨论:如果你在学习过程中有任何问题或想法,欢迎在评论区留言,我们一起交流学习。你的支持是我继续创作的动力!你们的支持是我不断进步的动力!🚀 分享给更多人:如果你觉得这篇文章对你有帮助,欢迎分享给更多对C++感兴趣的朋友,让我们一起进步!前言双向链表与单链表实现的思想(思路)基本一致,甚至更简单。原创 2024-11-18 21:25:45 · 909 阅读 · 0 评论 -
【初阶数据结构篇】归并排序、计数排序
特点:原创 2024-11-18 18:25:15 · 1262 阅读 · 1 评论 -
【初阶数据结构篇】冒泡排序、快速排序
⾸先从右向左找出⽐基准⼩的数据,找到后⽴即放⼊左边坑中,当前位置变为新 的"坑",然后从左向右找出⽐基准⼤的数据,找到后⽴即放⼊右边坑中,当前位置变为新的"坑",结 束循环后将最开始存储的分界值放⼊当前的"坑"中,返回当前"坑"下标(即分界值下标)任取待排序元素 序列中的某元素作为基准值,按照该排序码将待排序集合分割成两⼦序列,左⼦序列中所有元素均⼩ 于基准值,右⼦序列中所有元素均⼤于基准值,然后最左右⼦序列重复该过程,直到所有元素都排列 在相应位置上为⽌。你的支持是我继续创作的动力!原创 2024-11-15 21:06:02 · 1270 阅读 · 0 评论 -
【初阶数据结构篇】插入、希尔、选择、堆排序
1. 在元素集合 array[i]--array[n-1] 中选择关键码最⼤(⼩)的数据元素 2. 若它不是这组元素中的最后⼀个(第⼀个)元素,则将它与这组元素中的最后⼀个(第⼀个)元素 交换 3. 在剩余的 array[i]--array[n-2] ( array[i+1]--array[n-1] ) 集合中,重复上述步 骤,直到集合剩余 1 个元素。选择排序的基本思想: 每⼀次从待排序的数据元素中选出最⼩(或最⼤)的⼀个元素,存放在序列的起始位置,直到全部待 排序的数据元素排完。原创 2024-11-13 19:25:14 · 1335 阅读 · 1 评论 -
【初阶数据结构篇】二叉树OJ题
根节点与左右孩子的数值进行比较,如果相等依次递归左右子树,如果为空,或者两者对应的值相等,则返回true。🚀 分享给更多人:如果你觉得这篇文章对你有帮助,欢迎分享给更多对C++感兴趣的朋友,让我们一起进步!可以将该二叉树看成两个独立的二叉树,分别将“两个二叉树”的根节点传入,判断该是否为相同的二叉树。将两个数的根节点的值依次比较,依次递归两根节点的左子树,若根节点为空,直接返回。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。期待你的三连,你的支持就是我创作的动力!原创 2024-11-10 22:49:00 · 898 阅读 · 3 评论 -
【初阶数据结构篇】链式结构二叉树(续)
相信通过这篇文章你对二叉数性质与遍历的有了进一步的了解。如果此篇文章对你学习数据结构(二叉树)有帮助,期待你的三连,层序遍历:对于树型结构,层序遍历就是按层从上到下,每层按一定顺序对树的节点进行遍历。先将根节点入队列, 出队列前打印根节点的数据,同时将根节点的左右孩子入队列,重复该过程,直至队列为空。🚀 分享给更多人:如果你觉得这篇文章对你有帮助,欢迎分享给更多对C++感兴趣的朋友,让我们一起进步!进行说明:对于左边的二叉树,按层划分后可得到右边的分层结构。的结点,则该⼆叉树中的叶⼦结点数为( )原创 2024-11-05 15:55:37 · 1389 阅读 · 7 评论 -
【初阶数据结构篇】链式结构二叉树(二叉链)的实现(感受递归暴力美学)
按照规则,⼆叉树的遍历有:前序/中序/后序的递归结构遍历:1)前序遍历(Preorder Traversal 亦称先序遍历):访问根结点的操作发⽣在遍历其左右⼦树之前访问顺序为:根结点、左⼦树、右⼦树2)中序遍历(Inorder Traversal):访问根结点的操作发⽣在遍历其左右⼦树之中(间)访问顺序为:左⼦树、根结点、右⼦树3)后序遍历(Postorder Traversal):访问根结点的操作发⽣在遍历其左右⼦树之后访问顺序为:左⼦树、右⼦树、根结点。原创 2024-11-04 17:15:19 · 1554 阅读 · 2 评论 -
【初阶数据结构篇】探索堆的算法的巧妙
⽤剩余的N-K个元素依次与堆顶元素来⽐较,不满⾜则替换堆顶元素 ,然后再将交换进去后的元素向下调整(保证这k个元素始终是堆),最后将剩余N-k个元素依次与堆顶元素⽐完之后,堆中剩余的K个元素就是所求的前k个最⼩或者最⼤的元素。对于Top-K问题,能想到的最简单直接的⽅式就是排序,但是:如果数据量⾮常⼤,排序就不太可取了 (可能数据都不能⼀下⼦全部加载到内存中)。依次将堆顶最大的数据与最后一个(不断发生变化)元素交换,每次都是将最大的数据放最后,可以想象一下,就是升序了。前k个最⼩的元素,则建⼤堆。原创 2024-11-02 19:49:34 · 1238 阅读 · 2 评论 -
【初阶数据结构】实现顺序结构二叉树->堆(附源码)
文章目录。原创 2024-11-02 18:58:45 · 1204 阅读 · 1 评论 -
Leetcode算法题(链表的中间节点+返回倒数第k个节点+合并两个有序链表)
本题力扣链接:https://leetcode.cn/problems/middle-of-the-linked-list/solutions/164351/lian-biao-de-zhong-jian-jie-dian-by-leetcode-solut/原创 2024-07-16 16:31:07 · 591 阅读 · 11 评论 -
leetcode算法题(反转链表)
创建新的链表,遍历原链表,将原链表的节点进行头插到新链表中。原创 2024-07-15 22:19:32 · 394 阅读 · 7 评论 -
数据结构(空间复杂度介绍)超详细!!!
实际中我们计算时间复杂度时,计算的也不是程序的精确的执⾏次数,精确执⾏次数计算起来还是很 ⿇烦的(不同的⼀句程序代码,编译出的指令条数都是不⼀样的),计算出精确的执⾏次数意义也不⼤, 因为我们计算时间复杂度只是想⽐较算法程序的增⻓量级,也就是当N不断变⼤时T(N)的差别,上⾯我 们已经看到了当N不断变⼤时常数和低阶项对结果的影响很⼩,所以我们只需要计算程序能代表增⻓量 级的⼤概执⾏次数,复杂度的表⽰通常使⽤⼤O的渐进表⽰法。随着时代的发展,计算机的容量得到了较快的发展,因此一个算法不在特别关注空间复杂度。原创 2024-07-14 00:56:03 · 978 阅读 · 7 评论
分享