数据结构

绪论

 

数据结构:是指相互之间存在一种或者多种特定关系的数据元素的集合。

数据结构包括3个方面:逻辑结构、存储结构和数据运算。

逻辑结构是对数据之间关系的描述,与数据存储无关。分为两类:线性和非线性。

 

线性结构:
线性结构是数据元素之间存在一对一的关系,即除了第一个和最后一个元素,其他元素都有前驱和后继。
线性结构的典型代表是数组、链表、栈和队列等。
线性结构的特点是数据元素之间存在顺序关系,可以按照一定的次序访问。

非线性结构:
非线性结构是数据元素之间存在一对多或多对多的关系,即一个数据元素可能与多个数据元素相关联。
非线性结构的典型代表是树和图等。
非线性结构的特点是数据元素之间没有顺序关系,访问数据元素的顺序不固定。

数据元素之间的逻辑结构有四种基本类型:

①集合:结构中数据的元素除了“同属于一个集合”外,没有其他关系。

②线性结构:结构中的数据元素之间存在一对一的关系。

③树型结构:结构中的数据元素存在一对多的关系。

④图状结构或网状结构:结构中的数据元素之间存在多对多的关系。


物理结构/存储结构:是数据的逻辑结构在比算机中的表示(又称映像)。
物理结构是描述数据具体在内存中的存储


数据结构中常见的4种存储方式:
①顺序存储:顺序存储方法是存储结构类型中的一种,该方法是把逻辑上相邻的结
点存储在物理位置上相邻的存储单元中,结点之间的逻辑关系由存储单元的邻接
关系来体现。由此得到的存储结构称为顺序存储结构,通常顺序存储结构是借助
于计算机程序设计语言(如C/C++)的数组来描述的。
②链式存储:链式存储方法不要求逻辑上相邻的结点在物理位置上也相邻,结点间
的逻辑关系是由附加的指针字段表示的。由此得到的存储结构表示称为链式存储
结构,通常借助于计算机程序设计语言(如C/C++)的指针类型来描述它。
③索引存储:
索引存储方法在存储结点信息时除建立存储结点信息外,还建立
附加的索引表来标识结点的地址。索引项的一般形式是<关键字,地址>关
键字标识唯一一个结点,地址作为指向结点的指针
④散列存储:散列存储方法的基本思想是根据结点的关键字通过散列函数直
接计算出该结点的存储地址。这种存储方法本质上是顺序存储方法的扩展。

线性表:

栈与队列

 

数组:

数组是由n个相同类型的数据元素构成的有限序列,每个数据元素称为一个
数组元素,每个元素受n个线性关系的约束,每个元素在n个线性关系中的
序号称为该元素的下标,并称该数组为n维数组。
数组与线性表的关系:

数组是线性表的推广。一维数组可以看做是一个线
性表;二维数组可以看做元素是线性表的线性表,以此类推。数组一旦被
定义,它的维数和维界就不再改变。因此,除了结构的初始化和销毁之外。
数组只会有存取元素和修改元素的操作。

字符串简称串,
是一种特殊的线性多,
它的数据元素仅由一个字符组成。
串(String)是由零个或多个字符组成的有限序列。
串中字符的个数称为串的长度,含有零个元素的串叫空串。
串中任意连续的字符组成的子序列称为该串的子串,包含子串的串称为主串,
某个字符在串中的序号称为这个字符的位置。
通常用子串第一个字符的位置作为子串在主串中的位置。要注意的是,空格
也是串字符集合的一个元素,由一个或者多个空格组成的串称为空格串(注意,
空格串不是空串)。

树的定义
树(Tree)是n(n≥0)个结点的有限集合T,若n=0时称为空树,否则:
(1)有且只有一个特殊的称为树的根(Root)结点;
(2)若n>1时,其余的结点被分为m(m>0)个互不相交的子集Ti, T1,T2...Tm,其中每个子集本身又是一棵树,称其为根的子树(Subtree)。
这是树的递归定义,即用树来定义树,而只有一个结点的树必定仅由根组成。
树作为一种逻辑结构,同时也是一种分层结构,具有两个特点:
(1)树的根结点没有前驱结点,除根结点外的所有结点有且只有一个前驱结点。
(2)树中所以结点可以有零个或多个后继结点。树适合于表达具有层次结构的数据。

二叉树的定义
二叉树(Binary tree)是另一种树形结构,特点是每个结点至多只有两个子树(即二叉树不存在度大于2的结点),并且,二叉树的子树有左右之分,其次序不能随意颠倒。
二叉树是m(n>0)个结点的有限集合。若n=0时称为空树,否则:
(1)|有且只有一个特殊的称为树的根(Root)结点;
(2)若n>1时,其余的结点被分成为二个互不相交的子集T2,T1,分别称之为左、右子树,并且左、右子树又都是二叉树。
由此可知,二叉树的定义是递归的。
二叉树在树结构中起着非常重要的作用。因为二叉树结构简单,存储效率高,树的操作算法相对简单,且任何树都很容易转化成二叉树结构。

图: 网结构

是一种比表更复杂的数据结构

树 是 特殊的图  

图  有多个直接前驱 有多个 直接后继

子图:  图中的一部分节点以及这些节点的边 够成子图

 路径:从一个顶点到另一顶点所经过的边

 简单路径:路径中所经过的顶点没有重复的

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值