数据结构

栈:

  举例:就像咖啡厅的一大摞盘子,后入先出,只能从最上面拿取

列表:

  

队列:

  定义:队列是一种列表,不同的是队列只能在队尾插入元素,在队首删除元素。队列用于存储按 顺序排列的数据,先进先出,这点和栈不一样,在栈中,最后入栈的元素反而被优先处 理。可以将队列想象成在银行前排队的人群,排在最前面的人第一个办理业务,新来的人 只能在后面排队,直到轮到他们为止。 队列是一种先进先出(First-In-First-Out,FIFO)的数据结构。队列被用在很多地方,比如 提交操作系统执行的

  队列的操作有两种:

    1.向队列中插入新元素和删除队列中的元素。插入操作也叫做入 队,删除操作也叫做出队。

    2.入队操作在队尾插入新元素,出队操作删除队头的元素。

  优先入队:

    从优先队列中删除元素时,需要考虑优先权的限制。比如医院急诊科(Emergency Department)的候诊室,就是一个采取优先队列的例子。当病人进入候诊室时,分诊护士  会评估患者病情的严重程度,然后给一个优先级代码。高优先级的患者先于低优先级的患 者就医,同样优先级的患者按照先来先服务的顺序就医。

链表:

  定义:链表是由一组节点组成的集合。每个节点都使用一个对象的引用指向它的后继。指向另一 个节点的引用叫做链、

  双向链表:

  循环链表:循环链表和单向链表相似,节点类型都是一样的。唯一的区别是,在创建循环链表时,让 其头节点的 next 属性指向它本身,即: head.next = head

字典:

  定义:字典是一种以键 - 值对形式存储数据的数据结构,就像电话号码簿里的名字和电话号码一 样。要找一个电话时,先找名字,名字找到了,紧挨着它的电话号码也就找到了。这里的 键是指你用来查找的东西,值是查找得到的结果。JavaScript 的 Object 类就是以字典的形式设计的。本章将使用 Object 类本身的特性,实现 一个 Dictionary 类,让这种字典类型的对象使用起来更加简单。你也可以只使用数组和 对象来实现本章展示的方法,但是定义一个 Dictionary 类更方便,也更有意思。比如,使 用 () 引用键就比使用 [] 简单。当然,还有其他一些便利,比如可以定义对整体进行操 作的方法,举个例子,显示字典中的所有元素,这样就不必在主程序中使用循环去遍历字 典了

散列:

  定义:散列是一种常用的数据存储技术,散列后的数据可以快速地插入或取用。散列使用的数据 结构叫做散列表。在散列表上插入、删除和取用数据都非常快,但是对于查找操作来说却 效率低下,比如查找一组数据中的最大值和最小值。这些操作得求助于其他数据结构,二 叉查找树就是一个很好的选择。

集合:

  定义:集合(set)是一种包含不同元素的数据结构。集合中的元素称为成员。集合的两个最重 要特性是:首先,集合中的成员是无序的;其次,集合中不允许相同成员存在。集合在计 算机科学中扮演了非常重要的角色,然而在很多编程语言中,并不把集合当成一种数据类 型。当你想要创建一个数据结构,用来保存一些独一无二的元素时,比如一段文本中用到 的单词,集合就变得非常有用。在 JavaScript 中创建 Set 类。

  集合的三个特性:

    • 不包含任何成员的集合称为空集,全集则是包含一切可能成员的集合。

     • 如果两个集合的成员完全相同,则称两个集合相等。

     • 如果一个集合中所有的成员都属于另外一个集合,则前一集合称为后一集合的子集。

  集合的操作:

    • 并集 将两个集合中的成员进行合并,得到一个新集合。

    • 交集 两个集合中共同存在的成员组成一个新的集合。

    • 补集 属于一个集合而不属于另一个集合的成员组成的集合。

二叉树和二叉查找树:

  定义:树是计算机科学中经常用到的一种数据结构。树是一种非线性的数据结构,以分层的方式 存储数据。树被用来存储具有层级关系的数据,比如文件系统中的文件;树还被用来存储 有序列表。本章将研究一种特殊的树:二叉树。选择树而不是那些基本的数据结构,是因 为在二叉树上进行查找非常快(而在链表上查找则不是这样),为二叉树添加或删除元素 也非常快(而对数组执行添加或删除操作则不是这样)。

  二叉树是一种特殊的树,它的子节点个数不超过两个

  最后,每个节点都有一个与之相关的值,该值有时被称为键。

  当考虑某种特殊的二叉树,比如二叉查找树时,确定子节点非常重要。二叉查找树是一种 特殊的二叉树,相对较小的值保存在左节点中,较大的值保存在右节点中。这一特性使得 查找的效率很高,对于数值型和非数值型的数据,比如单词和字符串,都是如此。

 

posted @ 2018-05-21 17:23  Z-DL  阅读(188)  评论(0编辑  收藏  举报