自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

旭旭的专栏

主要专注于ios

  • 博客(11)
  • 收藏
  • 关注

原创 旭说数据结构之图的基本知识

1.图的定义较之线性表的1对1结构、树的1对多结构,图是多对多的数据结构。 图是由顶点和边组成的,一个图中至少有一个顶点(之前我们说树的时候,允许树中结点个数为0),所有顶点组成集合V,两个顶点之间如果相连就产生一条边,所有的边组成集合E,我们用G表示一个图,则G=(V,E)G=(V,E) 下面列出图中的一些概念: 概念 解释 示意 无向边 两个顶点之

2015-11-29 17:04:20 544

原创 旭说数据结构之二叉查找树

上一篇详细介绍树的特殊结构——二叉树的相关知识和操作。 这一篇介绍二叉树的特殊结构——二叉查找树。 较之一般的二叉树,二叉查找树限定了结点的左子树的所有结点值均小于该结点,结点的右子树的所有结点值均大于该结点。下图给了一个示意: 所以在往二叉查找树中插入元素时,要注意,不能随便找到一个空位就插入,而是要通过与根结点的比较,判断插在根结点的左子树还有右子树,倘若应该插在右子树,在与右子树的根

2015-11-20 17:18:33 343

原创 旭说数据结构之二叉树

在”旭说数据结构之树的简介中“介绍了树的基本知识。这一篇介绍树中的一个重要结构,二叉树。1.简述二叉树二叉树既然是树中的一个重要结构,它就在拥有树的全部特征的同时,还拥有自己的独特性。既然名字中带二,就说明最多可以分两个叉,即二叉树的度为2,同时二叉树还规定子树有左右之分,左边的叫做左子树,右边的叫做右子树。规定了左右之分后,3个结点的二叉树就有5种状态了: 定义 解释 完全二叉树 设

2015-11-17 21:33:27 545

原创 旭说数据结构之树的简介

1.概念描述线性表是一对一的数据结构。 树是一对多的数据结构。 树的定义是: 有n(n≥0)n(n\ge0)个结点,树的定义中允许结点个数为0的情形,结点之间有一定的关系,什么关系呢, 1. 当n=0n=0时,我们称这个树为空树; 2. 当n>0n>0时,有一个特定的结点被称之为根节点(root),然后其余结点都连在根结点的下面并进行延伸,与根节点直接相连的结点又构成了几棵子树,这几个节

2015-11-16 15:58:52 471

原创 旭说数据结构之散列表(哈希表)

对于线性表这种数据结构,当我们查找指定值的时候,只能通过与表中各个元素进行比较的方法。因为线性表每个位置上存放的值与位置没有关系,这个位置上想放什么值就放什么值。 而散列表(又称哈希表)这种数据结构每个位置上放置的数据的值与位置是有关系的,换句话说,你的数值是A,就只能放到f(A)f(A)这个位置上,你的数值是B,就只能放到f(B)f(B)上,这样当我想要知道数值A在不在散列表中的时候,我就计算一

2015-11-14 17:05:20 545

原创 旭说数据结构之用两个栈实现队列

用栈来实现队列。 栈的特征是 先进后出; 队列的特征是 先进先出; 我们把1、2、3入栈A,然后出栈,把出栈元素入到另一个栈B中(即把3、2、1入到另一个栈中),这时操作栈B执行出栈操作,出栈的顺序是1、2、3.如此一折腾,使用两个栈,便把1、2、3按照先进先出的规则输出了。 就好比有个黑匣子,它使得进去的元素只能按照先后顺序出来: 使用两个栈来实现队列,有个需要考虑的问

2015-11-14 11:41:01 393

原创 旭说数据结构之队列

队列又是一种特殊的线性表。特殊之处在于:想要移除线性表中的元素,必须从首元素开始移除;想要往线性表中插入元素,必须在尾部进行插入与栈遵循的先入后出原则不同,它遵循的是先入先出的原则。拿到一个队列,我们可以对它进行入队(队尾插入)和出队(队首删除)操作。 假如我想要使用队列,我肯定要先拿到一个队列。如果采用链表结构,利用链表的动态增长特性,我们倒是可以不用考虑队列的容量问题,但是因为要动态创建

2015-11-13 22:55:18 419

原创 旭说数据结构之栈的小题目

1.定义栈的数据结构,要求添加一个min()函数,能够得到栈的最小元素。要求函数min(),push(),及pop()函数的时间复杂度都是O(1).如果用上一篇文章中栈的实现方式“旭说数据结构之栈”,push和pop的时间复杂度可以是O(1),但是要想获得栈中的最小元素,需要遍历存储元素的数组,时间复杂度为O(n)。 这是得考虑变换栈的数据结构。思考1: 如果说我们给栈这个类添加一个成员变量mi

2015-11-12 23:36:31 507

原创 旭说数据结构之栈

提到栈,首先想到的就是先进后出,就像堆盘子一样,最先放的盘子放在最下面,最先取出的盘子是最后放的在最上面的盘子。 在网上看到有人打了一个比方,觉得很形象,拿来分享一下。 你就想像栈是一个竹筒,一头封死了,一头有开口可以往里面放东西,这样第一个放进去的东西,就只能最后一个倒出来。第二个放进去的,就倒数批二个倒出来。 至于它有什么用:再打个比方,你在洗衣服,洗到一半,你妈叫你去扫地(妈妈的话

2015-11-12 20:56:58 439

原创 旭说数据结构之链表补充(双向链表)

上文已经介绍了链表中的单链表,这里我们再叙述一下双向链表1.双向链表对比单链表,双向链表能够直接找到节点的前驱,也就能从任意一个节点到达链表的头结点和尾节点。如下图所示: 下面我们还是从使用的角度出发来定义双向链表的接口。我想使用一个双向链表,那我就new一个来用。然后我就往里插入元素。之后我又想在某个索引处插入一个元素。于是我就可以写出下面的代码: TwoDirectionsLinkL

2015-11-12 17:11:50 366

原创 旭说数据结构之线性表

数据结构就其字面意义来看,就是数据和结构。我们有一堆数据,它们之间有一定的结构关系,数据就像是砖头,把它们按规律放置就建成了有结构的房子。我们摆放数据的方式有多种。把数据挨个放,除了第一个数据和最后一个数据外,每个数据的前面和后面都各有一个数据(专业术语就是都有前驱和后继),这是一种一对一的数据结构,就是我们今天要详述的线性表。举个简单的例子,我是一个面试官,我要面试前来应聘的人,面试开始前已经

2015-11-12 14:31:14 730

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除