优先队列(堆)是一种非传统的数据结构,它不止用来存储数据,而且使数据排列具有一定的性质和规律,使其便于在数据中找到最具优先权的一个。本文介绍堆的性质、实现和应用,以及相关操作时间复杂度的计算。堆模型堆具有插入(Push)和删除(Pop)两种基本操作,插入将一个数据放入堆中,删除操作会找出、删除堆中的最大或最小元素。在后面我们会看到,堆往往用数组进行实现,它的逻辑结构是一棵完全二叉树,物理结构是一个
栈和队列在计算机科学中或许是最基本的两个数据结构,在实际中有着广泛的用途。栈和队列各有不同的性质,又各自有不同的实现方法,下面对栈和队列的性质、实现和常见应用做详细说明。栈栈模型栈(stack)是限制插入和删除只能在一个位置上进行的表,该位置是表的末端,叫做栈的顶(top)。栈具有后进先出(LIFO)的性质。对栈的基本操作有进栈(Push)和出栈(Pop),前者在栈顶插入一个元素,后者从栈顶删除一
一个链表的尾节点的next指针反而指向其他节点(包括自己),就构成了一个带环链表。对带环链表问题的求解,往往涉及环的入口点和环的周长。本文着重介绍单向带环链表中求环的周长和环的入口的若干解法。判断链表是否带环假设一个链表有环,则该链表一定包含一段闭合回路,遍历链表的指针进入该回路后就会陷入不断循环。已知的是,在一个闭合回路中,若两个点的运动相对速度合适,则两个点一定会在回路中的某个位置相遇(重合)
作为vi的升级版,vim不仅能显示语法高亮,还能进行一些程序和脚本的编写。无论是在mac机器的终端上进行文件编写和管理,还是在linux机器上进行系统管理,vim都是一个必要的得力工具。阅读本文,读者可以查阅到一些最常用的vim命令,了解vim的缓存和恢复机制,以及实现对vim的脚本配置。vim简介在所有Linux发行版上面都会有一个文本编辑器,那就是vi。vim是vi的高级版,在vi的基础上加入
链表是一种物理存储结构上非连续、非顺序的线性存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表中的元素(节点)中记录了与其他元素的连接关系,链表的存储方式相比于顺序表更加灵活。链表结构多样,分带头/不带头、单向/双向和循环/不循环,相互组合可以有8种结构。本文实现不带头单向不循环链表。逻辑结构链表的逻辑结构是线性和连续的,各个节点通过指针进行连接。物理结构链表的物理结构是离散的,存
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号