摘要:
前言 简单工厂模式、工厂方法模式、抽象工厂模式,关联比较大 因此这里放在一起总结下。方便比较,容易理解和区分。 这3种模式也都是一种创建型模式(创建型模式提供了创建对象的机制,能够提升已有代码的灵活性和可复用性。) 先做个简单比较,有个大致了解,下面再通过例子具体说明 简单工厂模式|工厂方法模式|抽 阅读全文
摘要:
概述 什么是单例模式 单例模式,是保证一个类只有一个实例,并提供一个访问该实例的全局节点。 单例模式是一种创建型模式(创建型模式提供了创建对象的机制,能够提升已有代码的灵活性和可复用性。) 说明 单例模式,是最简单的设计模式之一。看上面的描述就很能理解这一模式,不做过多说明。该类在内存中只有一个实例 阅读全文
摘要:
图的概述 什么是图 如图就是一张图,其实之前介绍的树、链表都可以看做一个简单的图。 图描述的是一种多对多的关系,由**顶点(vertex)和连接顶点间的边(edge)**组成。每个顶点可以有零个或多个前驱、也可以有零个或多个后继。 注:图可以没有边,但至少有一个顶点。 因此图可以表示成G=(V,E) 阅读全文
摘要:
堆的概述 什么是堆 堆是一种特殊的基于树的数据结构。树是完全二叉树,实现是数组。 堆的性质 这里的堆,一般指二叉堆,符合下面两种性质的。 堆总是一颗完全二叉树。 堆总是有序的。即堆的父结点总是大于等于子结点,或者堆的父结点总是小于等于子结点。 所以堆分为两种:最大堆(或大根堆,即堆的父结点总是大于等 阅读全文
摘要:
基本概念 什么是哈希表 哈希表(Hash table,也称散列表),是根据关键码(key)直接访问内存存储位置的数据结构。即通过关于key的函数,从而映射到一个地址来访问数据。这样可以加快查找速度。 这个关于key的映射函数称作哈希函数(散列函数),存放数据记录的数组称为哈希表(散列表)。哈希表的以 阅读全文
摘要:
树的第一部分(数据结构之树(Tree)(一)_树的基础)介绍了树的各个基础:什么是树、树的特点、树的表示方法、树的种类、树在存储结构中的表示、树/森林/二叉树之间的转换(原理)等。 这部分主要介绍下二叉树的创建及遍历(一种实现,主要了解二叉树遍历的过程)。遍历是二叉树重要的运算,是其他运算的基础。树 阅读全文
摘要:
该篇是关于树的概述,主要介绍什么是树、树的特点、树的表示方法、树的种类、树在存储结构中的表示、树/森林/二叉树之间的转换(原理)等,关于具体树(二叉树)的实现以及查找遍历等后续总结。 树的概述及特点 树是由n个(n>=0)结点组成的一个具有层次关系的集合。 如图,是一个普通的树的图像表示: 从这个图 阅读全文
摘要:
什么是队列(Queue) 之前总结过栈相关的知识,队列可以类比栈来看。栈只能在一端进行操作(栈顶),添加元素或者删除等都只能在栈顶;而队列有两端可以操作,在一端添加元素,在另一端删除元素。 我们把添加元素的一端称为队尾;删除元素的一端称为队首。 比如生活中的排队:城市中基本哪里都有,这就是一个队列。 阅读全文
摘要:
什么是栈(Stack) 栈是一种遵循特定操作顺序的线性数据结构,遵循的顺序是先进后出(FILO:First In Last Out)或者后进先出(LIFO:Last In First Out)。 比如: 生活中,厨房里的一摞盘子,你使用的时候会拿最上面的一个,最下面的那个最后使用。这就是FILO。当 阅读全文
摘要:
说明:如果仔细阅读完全文后,可能感觉有些不统一,这里先说明下原因。 链表尾引用不统一:在介绍单链表时,只有一个链表首部的引用(head) 指向第一个节点。你看到后面关于双链表及循环列表时,除了指向第一个节点的引用 还有指向最后一个节点(尾部)的引用。 这样做主要是,链表设计可能包含尾部的引用,也可能 阅读全文