【数据结构基础】数据结构基础概念

前言

数据结构,一门数据处理的艺术,精巧的结构在一个又一个算法下发挥着他们无与伦比的高效和精密之美,在为信息技术打下坚实地基的同时,也令无数开发者和探索者为之着迷。

也因如此,它作为博主大二上学期最重要的必修课出现了。由于大家对于上学期C++系列博文的支持,我打算将这门课的笔记也写作系列博文,既用于整理、消化,也用于同各位交流、展示数据结构的美。

此系列文章,将会分成两条主线,一条“数据结构基础”,一条“数据结构拓展”。“数据结构基础”主要以记录课上内容为主,“拓展”则是以课上内容为基础的更加高深的数据结构或相关应用知识。

欢迎关注博主,一起交流、学习、进步,往期的文章将会放在文末。


千里之行,始于足下。作为数据结构课程的首节内容,自然要从各种概念的定义讲起。本文将阐述数据结构的基本定义,以及组成数据结构的三方面内容——数据的逻辑结构、数据的存储结构、对数据的操作。
在这里插入图片描述


数据结构的定义

其实有关数据结构的定义,至今在计算机科学与技术界还未取得一致。但是这不妨碍我们通过一些已有的定义来了解数据结构的含义。

可以参考以下定义:

数据结构是指由若干数据元素按照一定方式构成的复合数据以及作用于其上的函数或运算。
数据元素及其间的数据约束关系合称为数据的逻辑结构。
数据结构从数学上可用适当的数学结构及其上的函数变换统一的定义

数据元素

在上文定义中,使用到了“数据元素”这个概念。

数据元素元素还可被称为元素、节点或定点等。他可以是一篇文稿、一本书,也可以是一个字符,一位二进制数据。数据元素的规模可大可小。

博主认为,数据元素就是一系列数据形成一个整体在结构中作为节点而存在。

数据元素可由若干数据项(也称域或字段)构成

数据的逻辑结构

在定义数据结构的过程中,使用数据元素及其数据约束关系定义了一个概念叫做数据的逻辑结构。

这个逻辑结构可以算是我们脑海中对于数据结构的常见概念了,在数学语言的描述下,数据结构不仅可以被严谨的定义,还可以使用图形生动的刻画出来。

  • 数据的逻辑结构从比较抽象的角度刻画了数据结构所具有的数学性质,将数据元素抽象为节点,数据元素之间的关系作为连接节点的边。

这里的逻辑结构强调使用数学语言描述结构性质

使用二元组和关系来定义逻辑结构

那么如何使用数学语言来描述数据的逻辑结构呢?

我们可以使用集合和关系的相关知识来完成对数据结构的定义。

设逻辑结构L为一个二元组 (N,R),即
L = ( N , R ) L = (N,R) L=(N,R)
其中,N代表节点集合,R是定义在集合N上的二元关系r的关系集合

不知道关系集合是什么也没有关系,在这里关系集合R就是节点集合N的笛卡尔集合NxN的子集。R中的元素是一系列的序偶,也就是一对一对的N中元素。如果R中存在序偶 (a,b),a,b∈N,就代表N中元素a,b满足关系r

数学定义往往是枯燥且抽象的,仅凭上面的数学定义还不足以体现多种多样的逻辑结构。我们说根据关系集合R的不同,节点集合中的元素就会呈现出很多截然不同的结构。这点很快会在下文谈到。


数据结构的组成

有些学者认为数据结构应有数据的逻辑结构、数据的存储结构及其运算三部分组成。那么不妨就暂从这三个方面来讨论数据结构的组成。

数据的逻辑结构

上文我们讨论到了数据的逻辑结构,并且给出了一个晦涩难懂的数学定义。下面就让我们更进一步的讨论下这个定义,并且根据关系性质的不同,来对数据结构分一分类

基于上面的定义,我们假设对于(a,b)∈R,定义其表示关系 “a是b的前驱节点,b是a的后继节点,a和b是相邻节点”

如果不存在b∈N且(a,b)∈R,则成b是始节点
类似的,如果不存在a∈N且(a,b)∈R,则成a为 终节点

线性结构

使用上面的已有定义对线性结构进行定义:

若节点数为1,则该节点既是始节点,又是终结点;
若节点数大于等于2,则有且仅有一个始节点和一个终结点,始节点仅有一个后继,终结点仅有一个前驱。
中间节点有且仅有一个前驱结点和一个后继节点。

举个例子,对于逻辑结构**L线性结构 = (N,R)**有:
N = { a , b , c , d } R = { ( a , b ) , (

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值