一、优先级队列 什么是优先级队列:优先级队列是一种比栈和队列更加常用的一种数据结构。在优先级队列中,数据项按照关键字的值有序。数据项插入到队列中时,会按照顺序插入到合适的位置,用来保证队列的顺序。 生活中的例子,假设你有若干封件,你最急需要处理的文件就放在所有邮件的 顶部,如果不急需处理的文件就.....
分类:
编程语言 时间:
2015-09-08 21:57:08
阅读次数:
193
1.栈和队列的共同特点是(只允许在端点处插入和删除元素)
4.栈通常采用的两种存储结构是(线性存储结构和链表存储结构)
5.下列关于栈的叙述正确的是(D)
A.栈是非线性结构B.栈是一种树状结构C.栈具有先进先出的特征D.栈有后进先出的特征
6.链表不具有的特点是(B)A.不必事先估计存储空间 B.可随机访问任一元素
C.插入删除不需要移动元素 D.所需空间与线性表...
分类:
编程语言 时间:
2015-08-29 21:41:18
阅读次数:
249
前面一篇文章讲到了二叉查找树的实现,其中的插入操作是使用非递归方法实现的,这里再增加一种递归实现插入的操作,Java代码如下,建议增加到前一篇文章对应的FOBinarySearchTree.java中;/**
* @TODO 二叉排序树插入元素(递归方法)
* @param e 需要插入的元素
* @return true or false
*/
public boolean insert(...
分类:
编程语言 时间:
2015-08-27 23:12:34
阅读次数:
220
递归函数的定义:把一个直接调用自己或通过一系列的调用语句间接地调用自己的函数,称做递归函数(递归函数必须有一个结束的条件,以免陷入无穷尽的递归中)。迭代和递归的区别是:?(1).迭代使用的是循环结构,递归使用的是选择结构。?(2).递归能使程序的结构更清晰、更简洁、更容易让人理解,从而减少读懂代码的时间。但是大量的递归调用会建立函数的副本,会耗费大量的时间和内存。?(3).迭代则不需要反复调用函数和...
分类:
编程语言 时间:
2015-08-27 23:12:15
阅读次数:
215
散列表的实现通常叫做散列hashing。散列是一种用于以常数平均时间执行插入、删除和查找的技术。但是,那些需要元素间任何排序信息的树操作将不会得到有效的支持。理想的散列表数据结构只不过是一个包含一些项的具有固定大小的数组。通常查找是对项的某个部分(数据域)进行的,这部分叫做关键字。例如,项可以由一个串(作为关键字)和其它一些数据域组成。我们把表的大小记作TableSize,并将其理解为散列数据结构...
分类:
编程语言 时间:
2015-08-27 00:30:40
阅读次数:
150
交换排序
(1)冒泡排序
1、基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。
2、实例
3、java实现
public static void main(String[] args)
...
分类:
编程语言 时间:
2015-08-21 17:13:16
阅读次数:
186
数据结构可以归类两大类型:线性结构与非线性结构,本文的内容关于非线性结构:树的基本定义及相关算法。关于树的一些基本概念定义可参考:维基百科
树的ADT模型:
根据树的定义,每个节点的后代均构成一棵树树,称为子树。因此从数据类型来讲,树、子树、树节点是等同地位,可将其看作为一个节点,用通类:Tree表示。如下图所示:
图:Tree ADT模型示意图
可采用“父亲-儿子-兄弟”模型来表示树的...
分类:
编程语言 时间:
2015-08-16 21:29:18
阅读次数:
194
栈是限制插入和删除只能在一个位置上进行的表,该位置是表的末端,叫做栈的顶top。对栈的基本操作有进栈push和出栈pop,前者相当于插入,后者这是删除最后插入的元素。栈有时又叫新进先出FIFO表。
由于栈操作是常数时间,因此除非在特殊情况下,栈不会产生明显改进。栈的第一种实现方法是使用单链表,通过在表的顶端插入来实现push,通过删除表顶端元素实现pop。top操作只是返回顶端元素的值。第二种实...
分类:
编程语言 时间:
2015-08-12 21:41:37
阅读次数:
130
数据结构之双向链表
例如:现有双向链表TwoWayLinked中存储着1,2,3,4四个元素,那么集合对象中会有4个节点A、B、C、D,由上述结构可以知道,节点A中存储着元素1和节点B;节点B中存储着元素2和节点A和节点C,节点C中存储着元素3和节点B和节点D,节点D中存储着元素4和节点C。如果现在要在元素2和3中间插入一个元素5;
过程如下:
1、创建节点E,E中存储元素5
2、将E中的...
分类:
编程语言 时间:
2015-08-12 19:38:45
阅读次数:
114
数据结构之单向链表
例如:现有双向链表OneWayLinked中存储着1,2,3,4四个元素,那么集合对象中会有4个节点A、B、C、D,由上述结构可以知道,节点A中存储着元素1和节点B;节点B中存储着元素2和节点C,节点C中存储着元素3和节点D,节点D中存储着元素4和null。如果现在要在元素2和3中间插入一个元素5;
过程如下:
1、创建节点E,E中存储元素5
2、将B中的下一个节点修改...
分类:
编程语言 时间:
2015-08-12 19:36:30
阅读次数:
111