![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 80
Billy12138
i am billy
展开
-
设计模式笔记-设计模式简介
一.抽象工厂模式旨在提供一个创建一系列或相关依赖对象的接口,而无需指定它们具体的类.二.建造者模式旨在将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.三.工厂方法模式旨在定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂模式使一个类的实例化延迟到其子类.四.原型模式旨在用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象.五.单例模式保证一个类仅有一个实例,并提供一个访问它的全局访问点....原创 2022-05-18 21:08:22 · 258 阅读 · 1 评论 -
【数据结构】栈和队列面试题
1、实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最 小值的操作)的时间复杂度为O(1) 针对这个问题我们可以有两种方法来解决,第一种方法: 我们每次压栈的时候压两个数字,先压数据,然后压最小值,每次压之前和数据比较一下,如果数据比最小值还小就把最小值更新成数据,然后再压数据和最小值,这就是压栈操作。这样可以保证栈顶就是最小值。 接下来是出栈操作,因为我们每次多压了一个...原创 2018-08-03 09:26:25 · 352 阅读 · 0 评论 -
【数据结构】二叉树常见面试题
1、创建二叉树 树的结构如下: 这里我们创建二叉树用的是静态创建即不是每次从标准输入读入数据然后插入树中,而是将定义好的一个序列,也就是一个数组构建一棵树,这里采用的是递归创建,首先来看一下参数,首先传进来的就是根结点,然后是要构建树的序列然后是数组下标索引,负责遍历整个数组,然后是数组的大小,然后是无效值,遇到无效值表示当前结点为空,就返回上一层函数调用,递归程序的出口是index...原创 2018-08-07 12:32:51 · 6058 阅读 · 0 评论 -
【数据结构】链表常见面试题集锦
比较顺序表和链表的优缺点,说说它们分别在什么场景下使用? (1)空间上的比较, 顺序表是一段连续空间,然后实现数据的增删,顺序表一般是固定大小的,链表是每次之开辟一个节点的大小用多少给多少。 (2)空间的使用 顺序表是直接开辟一段空间,如果数据过少的话就会造成空间的浪费,而链表是需要存储一个数据才开辟一个节点的空间,来保存数据,虽然有一个非数据项的指针域占用空间,可是相比顺序表要好很多,...原创 2018-08-02 09:41:20 · 387 阅读 · 2 评论 -
【数据结构】数据结构知识思维导图,一张图带你俯瞰数据结构
数据结构知识思维导图:原创 2018-08-05 15:07:38 · 12763 阅读 · 15 评论 -
【c语言】递归和非递归的相互转换
前面已经介绍过递归的相关概念这里不多介绍,直接介绍转换方法: 一、递归转非递归的两种方法 1、一般根据是否需要回溯可以把递归分为简单递归和复杂递归,简单递归就是根据递归式来找出递推公式(这也就引申出分治思想和动态规划) 2、复杂递归一般就是模拟系统处理递归的机制,使用栈或队列等数据结构保存回溯点来求解 二、如何用栈实现递归与非递归之间的转换 1、递归于非递归的原理 递归与非递归的转换基...原创 2018-07-25 15:17:18 · 4096 阅读 · 0 评论 -
【数据结构】排序算法总结及代码实现
我们通常说的排序算法指的是内部排序算法,即数据在内存中进行排序。 首先先来看一下我们学过的排序都有什么? 排序可以大的方面分为比较排序和非比较排序? 比较排序有: 1、冒泡排序 2、选择排序 3、插入排序 (1)二分插入排序 (2)希尔排序 4、归并排序 5、堆排序 6、快速排序 非比较排序有: 1、计数排序 2、基数排序 3、桶排序 我们先对各种排序进行对比: ...原创 2018-07-23 16:16:28 · 14554 阅读 · 5 评论 -
【数据结构】哈希表
将哈希这里所有的东西整理好 写一篇博客, 哈希表的提出—为什么用哈希 我们已经学过了很多的数据结构,这次我们来探究一下一种新的数据结构,这种数据结构叫做哈希表,这种数据结构的特点是查询效率特别高,最高可达到O(1),这也是这种数据结构被提出的原因。 什么是哈希冲突?哈希冲突怎么解决 哈希冲突概念: 但关键字集合很大时,关键字值不...原创 2018-05-20 12:25:30 · 430 阅读 · 0 评论 -
【数据结构】排序算法总结
给出一下排序的实现原理、时间复杂度,空间复杂度,稳定性以及适用场景 比较排序: 1. 直接插入排序 直接插入排序是一种最基本的插入排序方法,其基本思想是将第i个记录直接插入到前面i-1个已排序的序列中。排序的主要算法思想是:每次插入一个元素时先找要插入的位置,将这个位置之后的元素都从后往前都都后移一位,然后在插入位置,插入该元素。适用场景:在待排序的关键字序列基本有序且关键字个数比较少时,直接插入...原创 2018-04-12 01:14:46 · 400 阅读 · 0 评论 -
【数据结构】AVL树的实现
在上一篇博客中我们对AVL树进行了初步的介绍和插入算法分析,这次对AVL树进行代码实现:【数据结构】AVL树介绍代码如下:#include<iostream>using namespace std;template< class K, class V>struct AVLTreeNode{ AVLTreeNode(const K& key, const V...原创 2018-03-02 18:21:58 · 231 阅读 · 0 评论 -
【数据结构】AVL树介绍
AVL树概念:AVL树首先是一棵二叉搜索树,一棵AVL树或者是空树,或者是具有以下性质的二叉搜索树: 1、它的左右子树都是AVL树 2、左子树和右子树高度之差(简称平衡因子)的绝对值不超过1(-1、0、1)AVL树的平衡性:左右子树的高度绝对值不超过1,如果一棵二叉搜索树是高度平衡的,它就是AVL树。如果它有n个结点,其高度可保持在O(lgn),平均搜索时间复杂度O(lg(n))AVL树的插入...原创 2018-03-01 17:00:38 · 4507 阅读 · 2 评论