Java数据结构之线性数据结构总结(一)

7 篇文章 0 订阅
3 篇文章 0 订阅

线性数据结构

我们学习的数据结构都是从线性数据结构开始的,深刻理解线性数据结构非常必要。

线性数据结构的特征

  • 数据集合中有且只有一个——第一个元素
  • 数据集合中有且只有一个——最后的元素
  • 集合数据中的的中间元素只有一个前驱和后继
  • 集合数据中第一个元素没有前驱
  • 集合数据中最后一个元素没有后继

线性数据结构包括

  • 数组
  • 链表
  • 队列

数组:是一个物理概念

数组我们可以理解为一个强物理概念在计算机运行世界的一个映射,是一个物理世界到软件工程呈现的结果,即连续的存储空间在编程语言中的呈现。所以我们经常将数组与链表或者编程语言中的引用作对比。

由于数据数据存储一般是一个连续的存储空间,所以数据天然的具有索引,即我们可以随机访问(查询迅速,动态增删慢)。

链表:是一个逻辑概念

链表我们可以结合几个成语理解:按图索骥、顺藤摸瓜、沿波讨源、蔓引株求。也像传说中的六度空间理论:世界上的任意两个人之间都可以通过六层以内的朋友链而联系起来。

首先链表是一个线性结构,内部数据元素通过元素中的地址获取,所以链表的元素无法直接随机获取,获取一个元素只能一个一个遍历,但是这也产生了一个优点,增删效率高,但是查询效率就低了。

栈和队列:是一个逻辑概念

队列最容易理解,很想我们偶尔出去买东西人多了就要排队,队首元素先结束排队出队完成它的使命。栈像队列的操作的另一个极端,先进后出,生活中应用感觉不多(子弹夹中的子弹进出就是一种栈结构)

另外,读过一个很形象但让人感觉不适的比喻:吃了,拉出来就是队列,吐出来就是栈。

线性结构再总结

线性结构的最大意义就是保证数据操作的有序性和可控性(其他的数据结构也能保证),避免失控(有一本很有影响力书叫《失控》),计算机世界归根结底需要数据呈现的有序和可控,否则就是刚才那本书名。人工智能四个字终究能不能离开人工两个字很难说,但是如果人工智能不能离开人工是否是真正意义上的智能呢?如果离开了人工向像美剧《西部世界》一样会不会走向失控?还是会像电影《银翼杀手》中的机器人比人还具有人的感情?计算科学如果在失控的状态下又会走向何方?扯得有点远

此文胡扯到此正式结束,欢迎讨论。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值