
数据结构初阶
文章平均质量分 90
数据结构学习
sy'ty
学习
展开
-
stack和queue
队列是一种容器适配器,专门用于在FIFO上下文(先进先出)中操作,其中从容器一端插入元素,另一端提取元素。队列作为容器适配器实现,容器适配器即将特定容器类封装作为其底层容器类,queue提供一组特定的成员函数来访问其元素。元素从队尾入队列,从队头出队列。底层容器可以是标准容器类模板之一,也可以是其他专门设计的容器类。该底层容器应至少支持以下操作:empty:检测队列是否为空size:返回队列中有效元素的个数front:返回队头元素的引用back:返回队尾元素的引用。原创 2023-07-26 15:47:26 · 202 阅读 · 0 评论 -
顺序表和链表
线性表(linear list)是。线性表是一种在实际中广泛使用的数据结构,线性表在,也就说是连续的一条直线。但是,线性表在物理上存储时,通常以的形式存储。原创 2023-06-06 16:41:34 · 73 阅读 · 0 评论 -
单链表OJ题
使用哨兵位将哨兵位的next指向头节点,tail初始化与哨兵位一样next指向null,这样就省去了判断刚开始需要判断head和tail是否为null的步骤,只需要将两个链表中val小的节点依次尾插到tail后面即可,第一步tail的next就是指向头节点,这样哨兵位的next就是头节点,最后将guard的next,即为新链表的头节点赋值给head,再返回即可。2,0,刚好可以追上。将val小于x的节点放在一个链表,将val大于等于x的放在另一个链表,最后再将val大于等于x的链表放在小于x的后面。原创 2023-06-06 16:22:44 · 78 阅读 · 0 评论 -
算法的时间复杂度和空间复杂度
如何衡量一个算法的好坏呢?简洁对于代码的维护和调试有一定的优势,但是在选择实现方式时,我们还需要考虑其他因素,比如性能、可读性、健壮性等。对于斐波那契数列的递归实现方式,其简洁性可能会使其易于理解和实现,但是在计算较大的斐波那契数时,因此,虽然递归实现方式非常简洁,但在实际应用中可能存在性能和可靠性的问题。相反,一些更加复杂的实现方式(如迭代法)可能更加高效和可靠。所以,我们需要综合考虑多个因素来衡量一个算法的好与坏,包括简洁性、性能、可读性、健壮性等。原创 2023-06-02 22:05:58 · 62 阅读 · 0 评论 -
排序算法分析
排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。稳定性:假定在待排序的记录序列中,存在多个具有的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,,则称这种排序算法是稳定的;否则称为不稳定的。内部排序:数据元素全部放在内存中的排序。外部排序:数据元素太多不能同时放在内存中,根据排序过程的要求不能在内外存之间移动数据的排序。原创 2023-04-18 22:08:24 · 90 阅读 · 0 评论 -
二叉树链式结构的实现
学习二叉树结构,最简单的方式就是遍历。所谓二叉树遍历(Traversal)是按照某种特定的规则,依次对二叉树中的节点进行相应的操作,并且每个节点只操作一次。访问结点所做的操作依赖于具体的应用问题。遍历是二叉树上最重要的运算之一,也是二叉树上进行其它运算的基础。由于被访问的结点必是某子树的根,所以N(Node)、L(Left subtree)和R(Right subtree)又可解释为根、根的左子树和根的右子树。NLR、LNR和LRN分别又称为先根遍历、中根遍历和后根遍历。原创 2023-04-11 09:45:37 · 57 阅读 · 0 评论 -
二叉树的概念与结构
树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。有一个特殊的结点,称为根结点,根节点没有前驱结点除根节点外,其余结点被分成M(M>0)个互不相交的集合T1、T2、……、Tm,其中每一个集合Ti(1<= i<= m)又是一棵结构与树类似的子树。每棵子树的根结点有且只有一个前驱,可以有0个或多个后继。因此,树是递归定义的。子树是不相交的;原创 2023-03-30 21:02:12 · 150 阅读 · 0 评论 -
二叉树的顺序结构及实现
现实中我们通常把堆(一种二叉树)使用顺序结构的数组来存储,需要注意的是这里的堆和操作系统虚拟进程地址空间中的堆是两回事,一个是数据结构,一个是操作系统中管理内存的一块区域分段。下面我们给出一个数组,这个数组逻辑上可以看做一颗完全二叉树,但是还不是一个堆,现在我们通过算法,把它构建成一个堆。将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。删除堆是删除堆顶的数据,将堆顶的数据根最后一个数据一换,然后删除数组最后一个数据,再进行向下调整算法。堆中某个节点的值总是不大于或不小于其父节点的值;原创 2023-04-10 22:14:24 · 173 阅读 · 0 评论