随笔分类 - 数据结构
摘要:数据结构:队列 先入先出的数据结构 说明 在先入先出数据结构中,将首先处理队列中的第一个元素,即front所指的位置元素。 如上图所示,队列是典型的 FIFO 数据结构。插入(insert)操作也称作入队(enqueue),新元素始终被添加在队列的末尾。 删除(delete)操作也被称为出队(deq
阅读全文
摘要:数据结构:0/1背包问题 0/1背包问题 题目描述 有N件物品和一个容量为V 的背包。放入第i件物品耗费的费用是Ci1,得到 的价值是Wi 。求解将哪些物品装入背包可使价值总和最大? 基本思路 这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。 用子问题定义状态:即F [i, v]表
阅读全文
摘要:数据结构:循环队列 写在前面 附我的另一篇博客:C_队列的链式表示和描述 数组表示的问题 对于队列最好的方法是使用链表实现,因为对于数组来说,队列可能会出现下面这种情况: 如图所示,不可以继续添加元素,否则会造成数组越界而遭致程序出错。然而此时又不应该扩充数组,因为还有大量实际空间未被占用。 此时我
阅读全文
摘要:数据结构:堆排序 走进堆排序 什么是堆 堆(英语:Heap)是计算机科学中的一种特别的树状数据结构。堆实质是一颗完全二叉树。它就长下面这样: 正是由于他在形式上是一个完全二叉树,我们也将其可以用数组来存储。其中Kn的子元素的下标是是K(n*2)和K(n*2+1)。 但是堆是一种特殊完全二叉树,它的元
阅读全文
摘要:数据结构:散列表 散列表 什么是哈西表: 一种具有相同特性的数据元素的集合,每个元素具有唯一标识自己的关键字。 基本原理: 说明: 顺序查找、二分查找或者二叉树的查找是基于待查关键字与表中元素的关键字进行比较而实现的查找方法。 散列查找是通过计算哈希函数来得到待查关键字的地址,理论上在哈希表中查找元
阅读全文
摘要:数据结构:优先队列 引入优先队列 说明 优先队列是一种抽象数据类型,它是一种排序的机制,它有两个核心操作:找出键值最大(优先级最高)的元素、插入新的元素,效果就是他在维护一个动态的队列。可以收集一些元素,并快速取出键值最大的元素,对其操作后移出队列,然后再收集更多的元素,再处理当前键值最大的元素,如
阅读全文
摘要:数据结构:从插入排序到希尔排序 插入排序 算法思路 每次从无序表中取出第一个元素,将其插入到有序表中的适当位置,使有序表的长度不断加长,完成排序过程。 n个待排序的元素由一个有序表和一个无序表组成,开始时有序表中只包含一个元素。 流程演示 蓝色表示由有序表,黑色表示无序表! 分析 元素基本有序时,直
阅读全文
摘要:数据结构:二叉查找树 二叉查找树 基础知识 关于二叉树的基础知识,请看我的一篇博客:二叉树的链式存储 二叉查找树的特征 二叉查找树或者是一棵空树,或者是具有下列性质的二叉树: 1.若其左子树不空,则左子树上所有结点的值均小于它的根结点的值; 2.若其右子树不空,则右子树上所有结点的值均大于它的根结点
阅读全文
摘要:数据结构:静态查找表(C语言版) 1.写在前面 ►从查找说起: 在英汉字典中查找某个英文单词的中文解释;在新华字典中查找某个汉字的读音、含义;在对数表、平方根表中查找某个数的对数、平方根;邮递员送信件要按收件人的地址确定位置等等。 从计算机、计算机网络中查找特定的信息,就需要在计算机中存储包含该特定
阅读全文
摘要:数据结构:链表队列的实现 快速开始 队列是一种和栈相反的,遵循先进先出原则的线性表。此文章使用链表来实现队列。 如上图所示,就像一个自来水管,先进入水管的水先从水龙头出来,即Front位置的元素最先出队列,因为它们是最先入队列的。 2、实现队列 本代码是严蔚敏教授的数据结构书上面的伪代码的C语言实现
阅读全文
摘要:数据结构:二叉数查找树基本实现(JAVA语言版) 1.写在前面 二叉查找树得以广泛应用的一个重要原因是它能保持键的有序性,因此我们可以把它作为实现有序符号表API中的众多方法的基础。 也就是说我们构建较为完整的二叉查找树API,为以后作为有序符号表提供基础。 二叉查找树是高效的,灵活的。 .....
阅读全文
摘要:数据结构:JAVA实现二叉查找树 写在前面 二叉查找树(搜索树)是一种能将链表插入的灵活性与有序数组查找的高效性结合在一起的一种数据结构。 观察二叉查找树,我们发现任何一个节点大于左子节点且小于其右子节点,也就是说一个节点的左子树的所有值都小于当前节点,右子树中的所有值都大于当前节点,其中序遍历结果
阅读全文
摘要:数据结构:顺序栈的实现 1、快速开始 栈是一种遵循元素后进(Push)先出(Pop)规则的线性表,即最后加入的元素最先出来,它的实现可以用数组或者链表。 它的特点如下: 后入先出,先入后出。 除了头尾节点之外,每一个元素有一个前驱,有一个后继。 2、实现栈 我们已经说过了,栈是一种线性表,故其底层是
阅读全文