什么是数据结构

1.数据结构简介

数据结构是一种计算机科学技术领域广泛使用的专业术语,在很多书籍以及博客中,对数据结构的解释为数据在计算机的存储方式,很容易让人误以为数据结构只是一种数据的物理存储方式,其实不然,数据结构可以理解为:数据 + 结构数据是描述客观事物的符号,为程序操控,存储在计算机上,结构包括数据的逻辑结构和存储结构。

2.数据的逻辑结构

数据元素间抽象化的相互关系,与数据的存储无关,独立于计算机,但逻辑结构决定元素的输入、存储、发送、处理和信息传递的基本操作功能。逻辑结构有四种基本类型:集合结构、线性结构、树形结构和图形结构。表和树是最常用的两种高效数据结构,许多高效的算法能够用这两种数据结构来设计实现

2.1.集合结构

由若干元素集合在一起形成的团聚体(或称集合体)相互堆积起来的一种结构类型,数据元素之间无其他的关系,仅仅属于同一集合体而已。
集合结构

2.2.线性结构

数据元素之间存在一一对应的关系,其开始节点和终端节点具有唯一性,除了开始开始节点和终端节点,其他的元素有且仅有一个前驱节点和后继节点,线性表就是一个典型。
线性结构

2.3.树形结构

数据元素之间存在着一一对应的关系,每一个数据元素只有一个前驱节点,但是却又很多后继节点 终端节点可以有多个。二叉树就是一个典型。
树形结构

2.4.图形结构

又称为非线性结构,数据元素之间存在着多对多的关系,其前驱节点和后继节点的个数可以是任意多个
图形结构

注:四种逻辑结构存在着关系:树形结构是图形结构的特殊形式,而线性结构又是树形结构的特殊形式。

3.数据的存储结构

存储结构描述了数据在计算机内部的存储安排

3.1.顺序存储结构

把逻辑上相邻的数据存储在物理位置上相邻的存储单位里,用物理位置上的相邻来体现逻辑上的相邻,此种存储结构的又在于节省了存储空间,因为分配给数据的存储单元完全用于了数据的存储,数据之间的逻辑关系没有占用存储空间,可以实现对数据的随机存取,每个节点对应一个序号,由这个序号可以计算出数据的存储地址,缺点在于不变于数据的修改,对数据的插入和删除可能要移动一系列的数据。
顺序存储结构

3.2.链式存储结构

逻辑上相邻的两个数据元素不一定在物理位置上也要相邻,数据元素之间的相邻是用添加的指针来标识的,优点在于由于不要求在物理上的相邻,所以在进行插入,删除等时,只需要改变相邻节点的指针域,不必移动数据的位置,相对于顺序结构,链式的缺点在于存储空间利用率太低,因为存储数据的一部分单元用于了存储数据之间的逻辑关系,由于相邻的节点在物理位置上不一定相邻,所以不能进行随机存在。

链式存储结构

3.3.索引存储结构

该结构在存储数据元素的同时,还建立了一个附加的索引表,索引表中的每一项称为索引项(关键字,地址),关键字唯一标识一个数据元素 ,地址是指向数据元素的指针,采用了索引的存储结构可以所及存取数据元素,在进行插入,删除等时,只需要移动相应索引表中的地址,不必移动数据,故而大大提高了数据的查找速度,缺点在于添加了索引表,降低了存储空间的利用率

3.4.散列(哈希)存储结构

就是根据数据元素的关键字通过哈希函数计算出一个数值用做数据元素的存储地址,优点在于查找速度快,只需要给出关键字可立即计算出该数据元素的地址 特点是指存储数据元素不存储数据之间的逻辑关系,只适合进行快速查找和插入的场合

4.重拾数据结构

数据结构对一些科班出生来说,可能并不陌生但是很多人在校期间对这些专业基石课不以为然,相对于枯燥无味的数据结构与算法课程,大家可能更倾向于去学习一些更实用的开发框架,本人也是如此,对当时一些流行的框架爱不释手,觉得数据结构课程很鸡肋,食之无味,弃之可惜,学习它是因为要应付学校的考试和日后的求职面试,觉得在实际开发中并不实用,可是现实很快打了我一个响亮的耳光。

现已经从事开发工作2年,也自然由熟练使用相关开发框架过渡为研究一些优秀框架的源码,由于缺乏对数据结构的相关基础,源码研究的开始阶段自然是十分痛苦的,当然这也是我认识到数据结构的重要性。而在日常的开发中,难免会出现接手别人的代码,你会惊奇的发现,有时候即使是一个开发很多年的程序员,他写出的代码也是不能看,他的代码往往只是业务逻辑的堆砌,完全没有面对对象以及数据结构的设计,让人难以维护。所以为了自己的专业发展深度以及写出更友好的代码,我们都应该重拾数据结构。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值