数据结构
文章平均质量分 86
虚舟游梦
在校大学生,在进行c/c++的学习。
展开
-
链表相关题解(进阶)
1.输入两个链表,找出它们的第一个公共结点这里的示例输入是伪代码形式链表的相交是y字型,而不是x字型。这是一个单链表,每个节点只有一个next,所以不可能有x字型。思路:最基本的思路,看链表A中的节点是否为链表B中的节点。但这样的时间复杂度效率太低,为O(m*n);这样只有一个好处可以在确定相交后就能求出相交的节点。注意:不能用节点中的值进行比较,要用地址进行比较。思路2:找到链表A和链表B的尾结点,比较地址是否相同,相同则链表相交。时间复杂度为O(m+n)。如何找第一个交点?逆置可以吗原创 2022-04-09 16:05:36 · 390 阅读 · 0 评论 -
链表相关题解
以下题目皆来自力扣和牛客,可以通过搜索题目名找到对应题目前期最好配合画图进行解题,要进行特殊情况的考虑。在进行链表题训练时,最好自己先画图,然后再进行代码的书写,卡壳了或者完全没有思路再看解析。只看完本篇文章不代表你能从容解决链表题。1. 删除链表中等于给定值 val 的所有节点。//这里的头结点是链表实现的一种方式,后面会介绍到。画图分析,因为返回头结点,所以可以不用考虑头指针的因素。在实现单链表时也可以这样创建节点,但是要额外创建变量接受指针(返回值),每次创建节点都要创原创 2022-04-09 16:05:15 · 1122 阅读 · 0 评论 -
数据结构单链表
关于顺序表顺序表有一个大缺陷:数据必须连续存放顺序表的优势是:1.是一个连续的物理空间,方便下标随机访问。在排序和二分查找上有优势。顺序表的其他缺陷:1.插入数据,空间不够时要增容,增容有性能消耗。2.头部或中间位置插入删除数据,需要挪动数据,效率较低。3.存在空间占用,有空间浪费现象(扩容往往是扩二倍空间,二倍后的空间不会全部使用),不能按需申请和释放空间。基于顺序表的缺点,链表结构就被设计出来。我们将链表中一个储存数据的单元称为节点/结点链表基本结构的声明:原创 2022-04-07 16:23:46 · 416 阅读 · 0 评论 -
数据结构顺序表
1.线性表线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串...线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上(内存中)并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。2.顺序表2.1概念及结构顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。使用顺序表的原因在于,数原创 2022-04-07 16:20:42 · 2421 阅读 · 0 评论 -
复杂度讲解
什么是数据结构?通俗的来讲,我们在做一些项目时,需要把一些数据存储起来;方式包括:通讯录,数组,这些是顺序表,后面还有链表,哈希表,红黑树等高级数据结构。简单来说,就是管理数据的方式。什么是算法?算法可以说是通过某种方式对数据进行处理,具体的来讲就是:排序,二分查找。而暴力求解,回溯等属于算法的分类。递归则是解决算法问题的方式。1.算法效率1.1如何衡量一个算法的好坏?算法在编写成可执行程序后,运行时需要耗费时间资源和空间(内存)资源 。因此衡量一个算法的好坏,一般是从时间和空间原创 2022-04-04 18:41:51 · 2360 阅读 · 0 评论 -
二叉树(第二章)
二叉树链式结构的实现为什么还需要学习二叉树链式结构?不是有顺序结构了吗?顺序结构只是适合完全二叉树,还有非完全二叉树的情况。普通二叉树的增删查改没有价值,如果单纯是为了存储数据,不如使用线性存储。这里学习链式二叉树是给后面更复杂的搜索二叉树打基础。还有就是很多oj题是普通二叉树。搜索二叉树满足,左子树要比父亲节点小,右子树要比父亲节点要大,所有节点都满足这种情况。搜索二叉树的意义在于搜索,比如找17,17比12大,就不可能在左子树(这里存在矛盾点,但搜素二叉树还有其他性质,搜索二叉树确实是为原创 2022-04-22 09:34:47 · 61 阅读 · 0 评论 -
二叉树(第一章)
一.树概念及结构1.1树的概念树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。有一个特殊的结点,称为根结点,根节点没有前驱结点除根节点外,其余结点被分成M(M>0)个互不相交的集合T1、T2、……、Tm,其中每一个集合Ti(1<= i<= m)又是一棵结构与树类似的子树。每棵子树的根结点有且只有一个前驱,可以有0个或多个后继。因此,树是递归定义的。每棵树(包原创 2022-04-17 20:01:54 · 1126 阅读 · 0 评论 -
七大排序(一)
1.2常见的排序算法插入排序:直接插入排序,希尔排序选择排序:选择排序,堆排序交换排序:冒泡排序,快速排序归并排序:归并排序原创 2022-07-06 21:22:06 · 124 阅读 · 0 评论 -
七大排序(二)
之前讲的快速排序都是递归版本,递归是有缺陷的:如果递归的深度太深,会出现爆栈的问题。这是就需要递归改非递归了,递归改非递归需要用到栈,数据结构中的栈。二叉树的递归转非递归是高阶数据结构的内容了。.........原创 2022-07-07 22:16:28 · 107 阅读 · 0 评论