递归分为两个阶段,分别是递推与回归,先递推,然后回归。 定义:递归其实是⼀种解决问题的⽅法,在C语⾔中,递归就是函数自己调用自己。 思想:把⼀个⼤型复杂问题...
树是⼀种⾮线性的数据结构,它是由 n(n>=0) 个有限结点组成⼀个具有层次关系的集合。把它叫做树是因为它看起来像⼀棵倒挂的树,也就是说它是根朝上,⽽叶朝下的。
栈:⼀种特殊的线性表,其只允许在固定的⼀端进⾏插⼊和删除元素操作。进⾏数据插⼊和删除操作的⼀端称为栈顶,另⼀端称为栈底。栈中的数据元素遵守后进先出的原则。(先进...
带头是指存在一个头结点(哨兵位),但是不存储任何有效数据,用来占位子 注意:单链表是不带头的,方便理解,有时候称为第一个结点为头结点,实际上是没有头结点的
遍历:pcur指向头结点,循环,当pucr不为空进入循环,pucr里面指向的数据为要查找的值的时候就返回pcur否则将pucr下一个结点的地址赋值给pcur然后...
“车头” :plist是个变量,存储的是个地址,说明他是个指针 “车厢” : 相当于一个结点,不同于顺序表的是,它不仅存储数据,还存储了一个地址(或是个指...
解释: 定义一个i在size下标位置,每当头插一个数据,将i-1的数据赋值给i;然后i–,继续上述操作,直到i = 0时,i-1没有数据放到i中,所以跳出循...
线性表(linear list)是n个具有相同特性的数据元素的有限序列。线性表是⼀种在实际中⼴泛使⽤的数据结构,常⻅的线性表:顺序表、链表、栈、队列、字符串…线...
数据结构(Data Structure)是计算机存储、组织数据的⽅式,指相互之间存在⼀种或多种特定关系的数据元素的集合。没有⼀种单⼀的数据结构对所有⽤途都有⽤,...
给定一个整数数组 cost ,其中 cost[i]是从楼梯第i 个台阶向上爬需要支付的费用,下标从0开始。一旦你支付此费用,即可选择向上爬一个或者两个台阶。
这导致查找元素时,需要进行多次关键码之间的比较,搜索的效率取决于搜索过程中的比较次数。
1. cur 的左树为空且右树不为空时,我们需要判断 cur 是树根节点还是 prev 的左/右子树:
Map 和 Set 是一种专门用来搜索的容器或数据结构,其搜索的效率与其具体的实例化子类有关。
排序是计算机科学中最基础且重要的主题之一,无论是学术研究还是实际开发,都离不开排序算法的应用。
比如操作系统中进程调度、游戏中的事件处理、数据流中的高频元素统计等,这些场景都需要优先级高的元素能够优先被处理。
二叉树是计算机科学中最基础且重要的数据结构之一,不仅是许多高级数据结构(如AVL树、红黑树、堆等)的基础,也是面试中频繁考察的知识点。本文将系统性地介绍二叉树的...
数据结构是编程的基石,无论是算法设计还是系统开发,都离不开对数据结构的深入理解。栈和队列作为两种最基础的线性数据结构,广泛应用于各种场景中。本文将系统性地介绍栈...
链表是一种物理存储结构上非连续的存储结构,数据元素的逻辑顺序是通过链表中的引用链接次序实现的。
ArrayList是Java集合框架中的一个重要类,位于java.util包中。它实现了List接口,底层基于数组实现,可以根据需要动态扩容。