数据结构概述

专栏原创出处:github-源笔记文件 github-源码 ,欢迎 Star,转载请附上原文出处链接和本声明。

1.数据结构

相互之间存在一种或多种特定关系的数据元素的集合称为「数据结构」。按照视点的不同,数据结构可以分为「逻辑结构」和「存储结构」。

2.逻辑结构

数据对象中数据元素之间的相互关系称为「逻辑结构」。

2.1 逻辑结构的分类

  • 线性结构:
    数据元素之间是一对一的关系。

  • 树形结构:
    数据元素之间存在一种一对多的层次关系。

  • 图形结构:
    数据元素是多对多的关系。

  • 集合结构:
    数据元素除了同属于一个集合外,他们之间没有其他关系。 各数据元素之间是平等的,共同属性是“同属于一个集合”。

2.2 常见的数据逻辑结构层次关系图

3.存储结构

逻辑结构指的是数据间的关系,而存储结构是逻辑结构的存储映像。通俗的讲,可以将存储结构理解为逻辑结构用计算机语言的实现。常见的存储结构有顺序存储、链式存储、索引存储以及散列存储(哈希表)。

  • 顺序存储:将数据元素存放在地址连续的存储单元中,其数据间的逻辑关系与物理关系是一致的。常见的数组采用顺序存储结构。优点:节省空间,可以实现随机存取;缺点:插入、删除时需要移动元素,效率低。

  • 链式存储:将数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的。常见的链表采用链式存储结构。优点:插入、删除灵活;缺点:不能随机存取,查找速度慢。

4.逻辑结构和存储结构的区别

这两者并不冲突,一个指的是数据之间的关系,而另一个指这种关系在计算机中的表现形式。

比如,线性表中的栈,数据元素之间的关系是一对一的,除头和尾结点之外的每个结点都有唯一的前驱和唯一的后继,这体现的是逻辑结构;
而对于栈中的结点来说,它们可以顺序存储(也就是顺序栈),取一段连续的存储空间,将栈结点按顺序存入,每个结点和其前驱和后继在物理上都是相邻的。
同时,栈结点也可以链式存储(链栈),每个结点中包括数据域和指针域,而指针域就是用来指向其后继的,在访问时就可以通过指针来找到其后继进行访问,每个结点之间物理上可以相邻也可以不相邻。

参考

  • 《大话数据结构》 程杰著
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值