数据结构
文章平均质量分 95
以C语言为基础,学习内容包括时空复杂度、线性表、栈和队列、串、树和二叉树、图、查找、排序等。
情话0.0
在今天不断地学习,能够弥补昨天的缺失
展开
-
【数据结构】八大排序算法详解
在日常生活中,我们经常需要对收集到的各种数据进行处理,这些数据处理中用到的核心运算就是排序。例如,手机App中的各种排行榜,每年都会有的全国高校排行榜等等,它们都是按照一定的规律来进行排序的。目前已有上百种排序算法,此篇博客将介绍几类经典而又常用的排序算法,包括基本的算法思想、实现代码及性能分析。所谓排序,就是将待排序文件中的记录按照其中的某个或某些关键字的大小,递增或递减的排列起来,即将一组无序的记录序列调整为有序的记录序列。原创 2022-12-15 17:56:09 · 2516 阅读 · 52 评论 -
【数据结构】二叉树详解(下篇)
上一篇文章主要讲解了关于二叉树的概念、性质以及顺序结构的实现,此篇文章将继续完成堆的应用、二叉树的链式结构介绍以及相关操作实现。至此就基本完成了对二叉树的学习,主要还是要明白二叉树的性质,堆的创建、排序和TOPK问题,核心内容就是要明白向下调整算法以及向上调整算法的实现(这些都是建立于二叉树是完全二叉树的基础之上)。再者就是熟悉二叉树的遍历算法,主要是前中后序遍历,层序遍历的实现稍微有点难度,以及二叉树的有关操作(递归实现)。原创 2022-11-30 21:42:33 · 1008 阅读 · 44 评论 -
【数据结构】二叉树详解(上篇)
本文将主要对树、二叉树的相关概念和性质展开讲解,同时用代码实现一种特殊的二叉树(堆)的顺序存储实现。树是一种非线性的数据结构,它是由 n(n >= 0)个有限结点组成一个具有层次关系的集合。当 n = 0 时,称为空树。① 有且仅有一个特殊的点称为根结点,根结点没有前驱结点;② 当 n > 1 时,其余结点可分为 m(m > 0)个互不相交的有限集 T1、T2、……、Tm,其中每个集合本身又是一棵树,并且称为根的子树。原创 2022-11-23 22:19:29 · 1028 阅读 · 48 评论 -
【数据结构】我家三岁表弟都明白的栈和队列,你不会不了解吧?
以上为对栈和队列的介绍,一定要注意最开始对其的初始化条件:比如栈的top指针到底指向哪里非常关键。相对来说栈与队列理解起来也比较轻松,主要是明白它们各自的属性特征。文章若有不足的地方还请大佬指正!!!原创 2022-11-14 22:55:59 · 1202 阅读 · 56 评论 -
【LeetCode】移除元素、删除有序数组中的重复项、合并两个有序数组
给你一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。提示:首先要明白的是,该题目给定一个数组,删除题目给定的数组中存在的数字,并将删除后的数组元素个数进行返回,还有就是将非删除的元素进行往前挪动,因为改题目在自测时会根据你返回的数组元素个数进行访问,并不会去管数组后面的几个数字是多少。对于该题目,我们可以通过循原创 2022-11-01 10:46:35 · 1507 阅读 · 56 评论 -
【LeetCode】移除链表元素、反转链表、链表的中间节点
给你一个链表的头节点 和一个整数 ,请你删除链表中所有满足 的节点,并返回 新的头节点 。 对于这道题,定义一个当前指针从第一个结点开始比对,那么就会有两种情况:第一种情况为当前结点不是要移除的结点,则将当前指针向后移动进行下一个结点的比对;第二种情况就是当前结点是要移除的结点,对于这种情况还要分为两种,一种就是该结点为链表的第一个结点,只需将链表头指针和当前指针同时向后移动即可,另一种就是为链表中结点,则需要让被移除结点的前驱结点指向它的后继结点,由于此链表为单链表,当你找到链表中要被删除结点原创 2022-11-11 16:17:27 · 436 阅读 · 40 评论 -
【数据结构】原来你叫“带头结点的双向循环链表”啊
上篇博客带大家认识了单链表,单链表结点中只有一个指向其后继的指针,使得单链表只能从头结点依次向后遍历。对于插入、删除操作得从头遍历,尤其是在链表尾部,还有一点就是无法一步的访问到某个节点的前驱节点,也就是说访问前驱节点的时间复杂度为O(n)。为了避免这样的缺点,便引出了双向循环链表首先,它是一个链表,通过指针将所有的结点连接在一起;其次,循环链表表示整个链表从头到尾构成一个环,链表尾结点的next指针指向头结点;再者,双向表示链表结点有两个指针prev和next,分别指向其前驱结点和后继节点;原创 2022-11-08 19:06:51 · 2101 阅读 · 64 评论 -
【数据结构】单链表——单链表的定义及基本操作的实现(头插、尾插、头删、尾删、任意位置的插入与删除)
顺序表可以随时存取表中的任意一个元素,它的存储位置可以用一个简单直观的公式表示,但是插入和删除操作需要移动大量元素。链式存储线性表时,不需要使用地址连续的存储单元,即不要求逻辑上相邻的元素在物理位置上也相邻,它通过“链”建立起数据元素之间的逻辑关系,因此插入和删除操作不需要移动元素,而只需要修改指针,但也会失去顺序表可随机存取的优点。线性表的链式存储又称为单链表,它是通过一组任意的存储单元来存储线性表表中的数据元素。原创 2022-11-04 20:46:29 · 1516 阅读 · 65 评论 -
【数据结构】线性表之顺序表详解
数据的逻辑结构分为线性结构和非线性结构,线性结构中的线性表根据存储结构又分为顺序表和链表。这篇博客主要讲的是顺序表的定义和基本操作,以及它是如何实现的。线性表是具有相同数据类型的n (n>=0)个数据元素的有限序列,其中n为表长,当n=0时线性表是一个空表。线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串…线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。原创 2022-10-28 20:50:18 · 1603 阅读 · 42 评论 -
【数据结构】什么是时间复杂度、空间复杂度?看此篇文章足矣
在数据结构中,有着众多的算法,比如查找算法,排序算法等。在查找算法中有顺序查找、折半查找、分块查找等,排序算法中有冒泡排序、快速排序、希尔排序等,而面对这么多的算法,是怎样去衡量算法的执行效率呢?而这也就是此篇文章的重点:时间复杂度和空间复杂度。原创 2022-10-24 15:16:09 · 4233 阅读 · 54 评论 -
【数据结构】什么是数据结构?
此篇文章旨在对数据结构做一个初步认识,了解数据结构相关的概念和术语以及它的三要素。以上为学习数据结构的基础知识,也不是说非得熟知这些知识,只要你对于这些有一定的了解,那么对于后续的数据结构知识学习有一定的帮助。原创 2022-10-23 17:52:46 · 2592 阅读 · 43 评论