美文网首页
第一课 数据结构(1)

第一课 数据结构(1)

作者: XP_Aaron | 来源:发表于2019-02-12 22:55 被阅读160次

这次课程,我们来讲讲基础的数据结构,其中包含了链表,栈,队列等等。这些名词看起来枯燥 但实际上都能从日常生活中找到生动的例子,本文阅读大概需要15分钟。

链表

超市推车

超市里的推车,我们都有一个印象,一个连着一个。当我们取出推车的时候,只需要将连接前面车子的扣子断开即可。

在实际的计算机里面,有一个与此相似的数据结构。叫做链表。
链表中最简单的一种是单向链表,它包含两个域,一个信息域和一个指针域。

所以当往链表里面添加数据的时候,只需要修改插入点的指针,删除也类似,请看下面示意图:


添加数据 删除数据

但是当我们在链表中检索某一条数据的时候,必须从头开始检索。

当然除了单项链表,还有较为复杂点的双向链表以及环形链表,用来提高查询速度。

碟子

栈这种数据结构的显著特征是先进后出。比如上面的碟子。放置的时候,我们一个个往上堆,但是取的时候必须从最上面一个开始取。

如下所示:


出栈 入栈

是不是和叠盘子很像?

队列

排队

排队讲究的是先来后到,所以对于队列来说,它的特点就是,先进先出(First In First Out :FIFO)

入队 出队

要删除数据C,必须要将C前面的A,B 删除完,才行。

队列的查询也和栈类似,不能直接访问中间的数据,必须通过出队将目标数据变成首位之后才能访问。

哈希表

小区的快递柜子

小区的快递柜,当我们收到到货通知的时候,我们会拿到一串六位的数字,但我们并不知道购买的东西是在几排几列的柜子中,当取物品的时候,我只需要输入这六位数字,柜门会自动弹开,最终拿到我们物品。

hash表

哈希表的存储,有两部分组成,分别是KEY 和 VALUE, 比如我们要存储姓名,Value存的是姓名,而Key是根据一定规则(hash函数)生成的hash值。

当我们查找的时候,只需要根据key,就可以检索到对应的value。由于hash表的数据存储不一定是连续的,所以只要你知道key,既可删除对应的value。

所以hash表的特征是存储的灵活性和数据查询的高效性。

但是细心的同学也会发现,如果这个key相同怎么办?

如果key相同,这叫哈希冲突。解决冲突的办法有很多,其中有一种办法叫开放地址法,当检测到冲突,立刻计算出一个候补地址,如果再有冲突,继续计算,直到没有冲突为止。

数组

健身房柜子

健身房的柜子与快递柜不同,我们需要记住柜子的位置。第几排第几列。

数组是线性的存储结构,且有固定的大小,比如数组的名字叫a, 那么数组的第一个位置a[0],存储这value是4。


数组

数组的查找,我们可以随机访问,比如a[6],即可以查到90的一个值。

是不是很方便,那数组的删除和添加呢?


添加数据

比如在a[3]之后添加一个99的数据,
第一步,将数组扩容;
第二步,将a[3]之后的数据全部往后挪一个位置;
第三步,在空出来的a[4]位置上放入99这个数据。

删除数据:


删除数据

比如删除a[4]的数据7,
第一步,将a[4]的数据7删除;
第二步,但是a[4]位置还在,故将a[5]之后的数据挨个往前填;
第三步,最后删除多余的空间。

所以数组的删除和添加是不是比较麻烦?主要往中间添加数据或者删除数据,都必须移动它后续的数据。除非你操作末尾的数据。

--------------------------分割线-------------------------------------

小结

数据结构,其实就是数据在内存中的存放方式(比如位置&顺序)。就好比一件东西在容器中的放置方式。不同的数据结构,决定了数据增删改查的效率。不同的数据结构也有不同的使用场景。

不同的数据结构,操作数据的操作对比

数据结构类型 访问/检索 添加/删除
链表
数组
哈希表
队列 较快 较快

这个的对比是比较粗略的。衡量不同的数据结构优劣,其实有两个维度:时间和空间复杂度。而时间和空间复杂度,会有最坏和平均 两个值,这个后面还会涉及,这里大家只需了解,后续会详解。

参考:
https://zh.wikipedia.org/wiki/%E9%93%BE%E8%A1%A8
https://medium.com/omarelgabrys-blog/data-structures-a-quick-comparison-6689d725b3b0

相关文章

  • 第一课 数据结构(1)

    这次课程,我们来讲讲基础的数据结构,其中包含了链表,栈,队列等等。这些名词看起来枯燥 但实际上都能从日常生活中找到...

  • IOS开发_数据结构

    1、数据结构; 2、算法; 3、数据结构与算法; 1、数据结构; 1.1 概念: 数据结构:数据结构是计算...

  • 基础数据结构和算法

    程序 = 数据结构 + 算法 1.数据结构和算法 (1)数据结构 数据结构是由数据和结构两方面组成。 比如:数据就...

  • 数据结构(1)-结构初步

    title: 数据结构(1)-结构初步 categories: 算法与数据结构 tags: 数据结构 摘要 这几天...

  • 基础数据结构和算法1:简介

    N.Wirth(沃斯):程序 = 数据结构 + 算法 1. 数据结构 1.1 数据结构是什么? 数据结构是由数据和...

  • 2. 常用的数据结构

    1. 数据结构:八大数据结构分类2.数据结构导读目录 3.常见的数据结构与算法整理 1. 数组 介绍:在内存中连...

  • 01. 数据结构与算法绪论

    一、数据结构 1. 什么是数据结构 2. 数据结构的分类 3. 常用的数据结构 4. 数据结构的应用表现 二、算法...

  • 数据结构(一)线性表

    1.数据结构基础 1.什么是数据结构 数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定...

  • 数据结构(C语言版本)

    数据结构(C语言版本) 第1章 绪论 1.常用的数据结构类型:集合、线性、树形、图状。 2.数据结构: 逻辑结构:...

  • javascript基础知识个人整理

    1、关于数据结构 (1)栈数据结构 栈数据结构的特点是先进后出,后进先出。类比于乒乓球盒子。 ...

网友评论

      本文标题:第一课 数据结构(1)

      本文链接:https://www.haomeiwen.com/subject/csmleqtx.html