数据结构

序言:

数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。

一、定义

1.名词定义:* 数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成。记为:

Data_Structure=(D,R)

其中D是数据元素的集合,R是该集合中所有元素之间的关系的有限集合。

2.其它定义: Sartaj Sahni在他的《数据结构、算法与应用》一书中称:“数据结构是数据对象,以及存在于该对象的实例和组成实 例的数据元素之间的各种联系。这些联系可以通过定义相关的函数来给出。”他将数据对象(data object)定义为“一个数据对象是实例或值**的集合”。

Clifford A.Shaffer在《数据结构与算法分析》一书中的定义是:“数据结构是ADT(抽象数据类型Abstract Data Type) 的物理实现。”

Robert L.Kruse在《数据结构与程序设计》一书中,将一个数据结构的设计过程分成抽象层、数据结构层和实现层。其中,抽象层是指抽象数据类型层,它讨论数据的逻辑结构及其运算,数据结构层和实现层讨论一个数据结构的表示和在计算机内的存储细节以及运算的实现。

数据结构具体指同一类数据元素中,各元素之间的相互关系,包括三个组成成分,数据的逻辑结构,数据的存储结构和数据运算结构。

二、常见的数据结构

  • 线性表(数组 链表 栈 队列)

逻辑结构

数据结构从逻辑上看,分为下面几种结构

  • 集合结构

这种结构注意看,里面有很多元素,但是这些元素之间是没有什么关系的 类似我们OC里面的NSSet NSMutableSet

  • 线性结构

线性结构有什么特点呢?他们是有顺序的.这种是不是见过,我们OC中的NSArray NSMutableArray都是线性结构的

  • 树状结构

树状结构是一个或多个节点的有限集合。A为根节点,因为它最大! D是I&J的父节点.I和J他们是兄弟节点 .

  • 图形结构

图形结构简称"图",是一种相对复杂的数据结构.任意两个节点之间都可以关联.

三、存储结构

数据结构从逻辑上可以分为上面几种,但是这些数据统统都是要存放到内存里面去的,那么内存中存放数据也有不一样的结构.

  • 顺序存储结构

这组存储单元内存地址是连续的.

  • 链式存储结构

这组存储单元内存地址可以是连续的,也可以是不连续的.它不要求逻辑上相邻的元素在物理位置上也相邻.

四、线性表

线性表是最基本、最简单、也是最常用的一种数据结构。 线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的(注意,这句话只适用大部分线性表,而不是全部。比如,循环链表逻辑层次上也是一种线性表(存储层次上属于链式存储),但是把最后一个数据元素的尾指针指向了首位结点)。 我们说“线性”和“非线性”,只在逻辑层次上讨论,而不考虑存储层次,所以双向链表和循环链表依旧是线性表。 在数据结构逻辑层次上细分,线性表可分为一般线性表和受限线性表。一般线性表也就是我们通常所说的“线性表”,可以自由的删除或添加结点。受限线性表主要包括栈和队列,受限表示对结点的操作受限制。 线性表的逻辑结构简单,便于实现和操作。因此,线性表这种数据结构在实际应用中是广泛采用的一种数据结构。

作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个小编自己创建的iOS交流微信群,不管你是小白还是大牛欢迎入驻 ,分享面试题、面试经验,讨论技术, 大家一起交流学习成长!群即将满100人,扫码进不去了,可以加接待美女的微信让她拉你哦!(更有以下资料精心挑选的资料免费与大家一起分享哦!)

(1)底层原理分析资料
(2)面试必问底层技术资料
(3)开发过程中的加密底层实现
(4)开发实战框架-RAC 与 RXSwift
(5)音视频开发与直播技术
(6) AR 特效开发与底层原理
(7)常用框架底层原理分析
(8)最新分享+面试题解析 
(9)网络多线程+GCD底层详解 
(10)断点续传 特训
复制代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值