数据结构入门

已同步微信公众号乐享Coding,欢迎关注!

程序=数据结构算法

不知各位有没有玩过一款名为英雄联盟(LOL)的游戏,或者王者荣耀的MOBA类游戏,因为这是数据结构的第一篇文章入门,只是让大家能够对数据结构有个初步的通感,本篇文章理解需要有王者荣耀,英雄联盟这类游戏的试玩经验。

数据结构

  • 相互之间存在一种多种特定关系的数据元素的集合

在游戏中,我们把控制英雄作为一个程序,那么英雄可以作为一个数据对象,如上单英雄,那我需要一个地图(部分内存空间)来存储它,但是由于他是上单英雄,它需要上路这样的地形(数据结构)因为上单英雄不止一个,可以是多个,但是大多都依赖上单这个地形。然而,光有地形还不够,我们还需要研究对面的英雄的技能怎么克制我,自己如何出装,技能如何释放等等(算法),这样才能在游戏中打败它,否则,就会坑到被队友无脑喷,装备出的所用金币越少,价值大(时间效率高),我们的英雄才能更好的击杀对手,从而拿到First blood

总结如下:

术语 例子
数据元素(组成数据,有一定意义的基本单位,可以由很多数据项组成也被称为记录) 某个具体英雄
数据结构(相互之间存在一种或多种特定关系的数据元素的集合。) 地形
算法(解决特定问题求解步骤的描述) 策略
数据项(数据元素的属性) 英雄的属性
数据(描述客观事物的符号,是计算机可以操作的对象,能够被识别并输入给计算机处理) 英雄
数据对象(性质相同的数据元素的集合,是数据的子集) 上单英雄

关系图解如下:


提问:如何去选择数据结构去存储数据?

回答:这里还是以游戏为例,英雄联盟的地图共有4种地形,上单,中单,下路,打野,而这些地形都存储在一个地图上,每个地形都有对应位置的英雄,如拿我近期玩的比较多的上单英雄武器大师贾克斯(王者荣耀花木兰)为例,在游戏中他们被标为上单英雄,但是你可以选择他们去下路,去中路,也可以打野,

同样,存储数据也不一定只能用一种数据结构,现实就是这样的情况比较少,选择去上路的原因极大的是依靠上路的地形可以为自己建立一个很大的优势,而去别路或许就天生具有劣势,那么我们为什么不去选择上路这种地形呢?存储一些数据我们可以使用单向链表存储,也可用顺序存储,但是到底改选哪一种呢?这就需要根据具体的功能而定,如想要查询快的话(想一些购物的商品网页),当然是顺序存储占优势,速度更快,因为每一个都有索引,根据索引就能返回查询的数据。

相比以上的例子,数据结构可能知识点会更多些,因为计算机中的数据元素种类很多,数量巨大,依赖关系十分复杂,为解决这个问题,数据结构分为逻辑结构物理结构

逻辑结构

定义:数据对象中数据元素之间的相互关系。

集合结构 数学学过,不能重复,各个平等
线性结构 一对一,糖葫芦
树形结构 一对多,有层次,倒着的树
图形结构 多对多,网状结构

如何去理解逻辑结构

相信各位都学过物理,画过电路图,电路图其实就是电路的逻辑结构,我们画电路图就是为了减少无关影响,更加注重逻辑,还有一个例子就是质点,如图:

物理结构显而易见了,就是电路实际的样子,如图:

物理结构

定义:数据的逻辑结构在计算机中的储存形式.

顺序存储结构 连续(one by one)
链式存储结构 不连续,数据中包含指针,指向下一数据地址

抽象数据类型

数据类型(官方):一组性质相同的集合及定义在此集合上的一些操作的总称。

​ 通俗:有范围的数据及操作规范。

抽象数据类型(官方):指一个数学模型及定义在该模型上的一组操作。

​ 通俗:可以自定义的数据类型

描述抽象数据类型
ADT 抽象数据类型名
Data数据元素之间逻辑关系的定义
Operation操作1操作结果描述操作2......操作n
endDAT

举例:一个游戏人物(如马里奥)在初始中只有跳,跑的操作,但是有的公司这个人物可能需要打枪的动作,有的公司这个人物可能需要趴下的动作,因此自定义的抽象数据类型就很重要!

数据结构入门概述笔记,结合英雄联盟游戏举例,通俗易懂!相关推荐

  1. 基于NodeJS英雄联盟游戏游戏综合网站

    21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识,科学化的管理,使信息存储达到准确.快速. ...

  2. 游戏迷英雄联盟游戏高清壁纸!扮演你的英雄

    简介:英雄联盟游戏的风靡已经持续了好长一段时间了. 这个由腾讯旗下的公司开发的竞技网游,目前已经累计了相当多的玩家和粉丝. lol英雄联盟壁纸大全让你重新燃起战斗的热情. 说到电脑壁纸,你是否也是一个 ...

  3. Discuz大气仿英雄联盟游戏风格论坛模板源码

    正文: Discuz大气游戏风格模板,lol英雄联盟游戏模板,DZ游戏娱乐模板GBK,模板名称:lol英雄联盟游戏(m0398_lol). 程序: wwmes.lanzouq.com/iEMST09y ...

  4. Python爬取熊猫TV 英雄联盟游戏分类下面所有主播的人气排行

    编写这个原生爬虫项目的3个主要目的: 1.巩固 python 基础知识 2.了解合理的编码规范和方式 3.了解爬虫基本原理 项目分析: 1.爬取网站: 熊猫TV(https://www.panda.t ...

  5. 英雄联盟游戏服务器IP

    英雄联盟游戏 14.215.154.65 113.96.219.125 61.129.6.169 113.96.221.82 14.215.154.237 113.96.219.90 14.215.1 ...

  6. Docker在英雄联盟游戏中的实践探索(二)

    本文讲的是Docker在英雄联盟游戏中的实践探索(二),[编者的话]这篇博客是Riot的Docker实践系列博客的第二篇,主要内容是:基于Cloudbees镜像创建新的Dockerfile,设置了一个 ...

  7. Docker在英雄联盟游戏中的实践探索(五)

    本文讲的是Docker在英雄联盟游戏中的实践探索(五),[编者的话] 这篇博客是Riot的Docker实践系列博客的第五篇,主要讨论了如何从头创建你的Docker镜像. 在以前的帖子中,我们讲解了如何 ...

  8. Docker在英雄联盟游戏中的实践探索(四)

    本文讲的是Docker在英雄联盟游戏中的实践探索(四),[编者的话]这篇博客是Riot的Docker实践系列博客的第四篇,主要讨论了如何添加一个基于Nginx的代理容器,以及如何用Compose来管理 ...

  9. lol登录服务器未响应w7,Win7下无法登入LOL英雄联盟游戏的原因及解决方案

    在win7系统中玩一些游戏的时候,经常会碰到各种各样的问题导致无法玩游戏,最近有使用win7纯净版系统用户反映说在玩lol英雄联盟登录服务器的时候,无法登入游戏,或者登录客户端之后不能玩的问题,而这种 ...

最新文章

  1. 行人被遮挡问题怎么破?百度提出PGFA新方法,发布Occluded-DukeMTMC大型数据集 | ICCV 2019...
  2. Dbvis数据库连接工具将查询出数据转化为sql插入语句方法
  3. 编程之美-数组分割方法整理
  4. 桔子浏览器电脑版看不了视频怎么办 视频无法播放怎么解决
  5. java定时任务设置为每天执行一次,首次还是好的,到第二天就不执行了的原因
  6. 在Windows上删除所有的Oracle安装 和电脑名改变后的设置...
  7. 贝叶斯公式理解与应用
  8. 车子刹车油管ABS油管被剪了好几刀,我还有救吗?
  9. 基于STM32F4的CANOpen移植教程(超级详细)
  10. JavaSE阶段笔记
  11. Unable to negotiate with 192.168.XX.XX port XXXX: no matching key exchange method found.
  12. 计算机硬件系统中外设,计算机及外设 计算机硬件系统
  13. 怎样用计算机命令提高网速,电脑如何使用命令提示符限制本地网速?
  14. matlab三个自变量一个因变量拟合
  15. 小故事-小男孩和瓶子
  16. mysql连表条件查询_mysql带条件查询,联表查询
  17. 笔记本显示网络电缆被拔出怎么解决_本地连接网络电缆被拔出 本地连接网络电缆被拔出解决方法【图文】...
  18. 【项目管理一点通】(11) 找到项目的节点和里程碑
  19. Ubuntu无法输入管道符及其他符号
  20. 天翼云高级解决方案架构师考点

热门文章

  1. 庄子·内篇·养生主第三
  2. IT30: IT男之家训(关于孩子)
  3. 华为荣耀——U8860
  4. 滴滴国际化部门Android客户端开发面经分享
  5. 安装 totem-pps 看网络电视
  6. 怎么样合成照片?图片如何做gif动态图片?
  7. JavaScript 鼠标坐标、元素尺寸、浏览器尺寸及坐标
  8. 这个618别错过、值得入手的数码好物推荐
  9. 4 1-4 30推荐文章汇总
  10. 磁盘写保护,只读,怎么办?