数据结构
xzq823211673
码农
展开
-
数据结构-数组
数组是我们开发中最常用的数据结构之一,在大部分编程语言中数组的下标都是从0开始的,为什么不是从1开始呢? 1,数组如何实现随机访问? 首先说下数组的定义:数组是一种线性的数据结构,它用一组连续的内存来存储相同类型的数据。 数据的定义涉及到两个关键字,线性结构和连续内存,下面分析下这两个关键字 1.1 线性结构 线性结构就是数据排成像一条线一样的数据结构,...原创 2019-07-13 14:23:08 · 157 阅读 · 0 评论 -
数据结构-栈
1,栈的定义 栈是限制插入和删除都只能在一个位置上进行的表,该位置是表末端,叫做栈的顶。对栈的基本操作有push(进栈)和pop(出栈),栈的特点就是后进先出。 二、为什么需要栈? 1.栈是一种操作受限的数据结构,其操作特性用数组和链表均可实现。 2.但,任何数据结构都是对特定应用场景的抽象,数组和链表虽然使用起来更加灵活,但却暴露了几乎所有的操作,难免会引发错误操作的风险。 3.所以,...原创 2019-07-14 16:11:10 · 136 阅读 · 0 评论 -
数据结构-队列
1,队列的概念 队列这个概念非常好理解。你可以把它想象成排队买票,先来的先买,后来的人只能站末尾,不允许插队。先进者先出,这就是典型的“队列” 我们知道,栈只支持两个操作,push(入栈)和pop(出栈),队列跟栈很像,同样也只支持两个操作,enqueue(入队)和dequeue(出队)。 2,队列的实现 队列可以用数组实现,也可以用链表实现。用数组实现的队列称为顺序队列,用链表实现的队列...原创 2019-07-14 17:31:05 · 129 阅读 · 0 评论 -
数据结构-散列表
什么是散列表? 散列表其实就是我们平常说的哈希表或者hash表,散列表采用的是数组支持下标随机访问数据的特性,所以散列表也是数组的一种拓展,由数组演化而来。散列表其核心思想就是通过散列函数计算出散列值,然后通过散列值获取到位置对元素实现增删等操作。 散列函数 散列函数是散列表中的核心,顾名思义,散列函数是一个函数,我们可以把它定义为hash(key),其中key表示元素的键值,hash(ke...原创 2019-07-20 15:28:34 · 376 阅读 · 0 评论 -
数据结构-树
今天来说一下树,树是一种非线性结构,比线性结构复杂得多。 树(Tree) 什么是树? 通过上图,我们发现,树这种存储结构很像我们生活中的树,每个元素我们称为节点,用来连线相邻节点之间的关系,称为父子关系。 如下图,A节点就是B节点的父节点,B节点是A节点的子节点。B、C、D这三个节点的父节点是同一个节点,所以它们之间互称为兄弟节点。我们把没有父节点的节点叫作根节点,也就是图中的节点E。...原创 2019-07-20 20:40:02 · 132 阅读 · 0 评论 -
数据结构-二叉查找树
前面介绍了树和二叉树的基本概念以及存储。 今天再来学习一下一种特殊的二叉树,二叉查找树。二叉查找树最大的特点就是,支持动态数据集合的快速插入、删除、查找操作。 散列表也是支持这些操作的,并且散列表更加的高效,时间复杂度是O(1)。既然有了这么高效的散列表,为什么还需要二叉查找树呢?使用二叉树的地方是不是都可以替换成散列表呢?有没有哪些地方是散列表做不了,必须要用二叉树来做的呢? 1.二叉查找...原创 2019-07-20 23:28:01 · 251 阅读 · 0 评论