基础数据结构
基础数据结构
小张012
在读大学生,纪录学习!
展开
-
<算法笔记>堆
一般情况下,有两种类型的堆:最大堆和最小堆。在最大堆中,每个节点的值都大于或等于它的子节点的值,而在最小堆中,每个节点的值都小于或等于它的子节点的值。堆是一种特殊的数据结构,通常用于实现优先队列和排序算法。堆通常被描述为一棵完全二叉树,其中每个节点都比它的子节点大(或者小)。堆的操作有两种:上浮和下沉,上浮对应优先队列的插入操作push(),下沉对应优先队列的删除队头的操作()。原创 2023-09-18 21:47:24 · 62 阅读 · 1 评论 -
<算法笔记>二叉树和哈夫曼树
二叉树是一种常用的树形结构,每个节点最多有两个子节点,分别成为左孩子和右孩子,以它们为根的子树称为左子树和右子树。如果一个二叉树的每层节点数都是满的,那么它被称为满二叉树。如果一个二叉树只有最后一层未满,且缺失的节点都在右边,则被称为完全二叉树。从根到节点u的路径长度定义为u的深度,节点u到它的叶子节点的最大路径长度定义为节点u的高度,根的高度最大,称为树的高。原创 2023-09-18 09:12:32 · 94 阅读 · 1 评论 -
<算法笔记>栈
栈的特点是先进后出,编程时通常直接使用STL stack,或者自己手写栈。原创 2023-09-13 20:28:10 · 52 阅读 · 1 评论 -
<算法笔记>队列
顾名思义,队列是一种先进先出的数据结构。队列有两种实现方式,链队列和循环队列。链队列可以看作是单链表的一种特殊情况,而循环队列则是一种顺序表,使用一组连续的存储单元依次存放队列元素,用两个指针head和tail分别指示队头和队尾元素,当其中一个走当头时,便会回到开始位置,形成循环。原创 2023-09-11 22:02:53 · 39 阅读 · 0 评论 -
<算法笔记>链表
使用链表时,可以直接使用STL list,也可以自己实现,通常实现方法有动态链表和静态链表。在算法竞赛中,选手通常使用STL list减少编译时间和书写时间,有时也会手动实现静态链表,而对于能及时释放空间的动态链表,则往往不会使用,这是因为它需要管理空间,容易出错,且大多算法竞赛并不会对内存要求过于苛刻。是用一组位于任意位置的存储单位存储线性表的结构,它与数组不同在于,数组是的存储单元是连续的,而链表。,因此,在有关插入、删除的操作中,我们使用链表会更加方便快捷。原创 2023-09-11 07:25:05 · 69 阅读 · 0 评论