数据结构的概念及定义

一、数据结构的概念及定义

1. 定义

数据结构是相互之间存在一种或多种特定关系的数据元素的集合。“结构”就是指数据元素之间存在的关系,一般分为逻辑结构和存储结构

1. 数据逻辑结构

指反应数据元素之间的逻辑关系的数据结构,其中逻辑关系是只数据之间的前后关系,而与他们在计算机中的存储位置无关。逻辑结构包括:

  • 集合:数据结构中的元素之间除了“同属一个集合”的相互关系外,别无其它关系
  • 线性结构:数据结构中的元素存在一对一的相对关系
  • 树形结构:数据结构中的元素存在一对多的相互关系
  • 图形结构:数据结构中的元素存在多对多的相互关系

2. 数据物理结构

数据的物理结构是数据在计算机中的表示(又称映像),他包括数据元素的机内表示和关系的机内表示。由于具体的实现方法有顺序、连接、索引、散列等多种,所以,一种数据结构可表示成一种或多种存储结构。

  • 数据元素的机内表示(映像方式):用二进制位的位串表示数据元素。通常这种位串称之为节点(node)。所以,节点是数据元素的机内表示(或机内映像)
  • 关系的机内表示(映像方式):数据元素的关系的机内表示可以分为顺序映像和非顺序映像,常用两种存储结构:顺序存储结构和链式存储结构。顺序映像借助元素在存储器的相对位置来表示数据元素之间的逻辑关系。非顺序映像借助指示元素存储位置的指针来表示数据元素之间的逻辑关系

3. 数据存储结构

数据的逻辑结构在计算机存储空间中的存放形式称为数据的物理结构(也成为物理结构)。一般来说,一种数据结构的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有顺序存储、链式存储、索引存储和哈希存储等。

数据顺序存储的特点是:借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系;非顺序存储的特点是:借助指示元素存储地址的指针表示数据元素之间的逻辑关系

2. 分类

数据结构一般分为多种,一般来说,按照数据逻辑结构对齐进行简单的分类,包括线性结构和非线性结构两类。

1. 线性结构

线性结构就是表中各个数据节点具有线性关系。线性结构应该包括一下几点:

  • 线性结构是非空集。
  • 线性结构有且仅有一个开始和一个结束节点。
  • 线性结构的所有节点都最多只有一个直接前驱节点和一个直接后继节点

2. 非线性结构

非线性结构就是表中各个数据节点具有多个对应关系,非线性结构应该包括一下几点:

  • 非线性结构是非空集。
  • 非线性结构的一个节点可能有多个直接前驱节点或多个直接后继节点。

二、常用数据结构

1. 数组(Array)

数组是一种聚合数据类型,他是将具有相同数据类型的若干变量有序的组织在一器的集合。数组可以说是最基本的数据结构,在各种编程语言中都有对应。一个数组可以分解为多个数组元素,按照数据元素的类型,数组可以分为整型数组、字符串型数组、浮点型数组、指针数组和结构数组。数组还可以有一维、二维及多维等表现形式。

2. 栈(Stack)

栈是一种特殊的线性表,它只能在一个表的固定端进行插入和删除操作。栈按照先进后出或后进先出的原则来存储数据,也就是说,先进的数据将压入栈底,最后插入的数据在栈顶,读出数据时,从栈顶开始逐个读出。栈在汇编语言中,经常用户重要数据的先出保护。栈中没有数据时称为空栈。

3. 队列(Queue)

队列和栈类似,也是一种认识的线性表。和栈不同的是,对了只允许在表的一段进行插入操作,而在另一端进行删除操作。一般来说,进行插入操作的一段称为队尾,进行删除操作的一段称为对头。队列中没有元素时,称为空队列。

4. 链表(Linked List)

链表是一种数据元素按照链式存储结构进行存储的数据结构,这种存储结构具有在物理上存在非连续的特点。链表由一系列的数据节点构成,每个数据节点包括数据域和指针域两部分。其中,指针域保存了数据结构中下一个元素存放的地址。链表结构中数据元素的逻辑属性是通过链表中的指针链接次序来实现的。

5. 树(Tree)

树是典型的非线性结构,它包括2个节点的有穷集合K。在树结构中有且仅有一个根节点,该节点没有前驱节点。在树结构中的其它节点都有且仅有一个前驱节点,而且可以有2个后继节点。

6. 图(Graph)

图是另一种非线性数据结构。在图结构中,数据节点一般称为顶点,而边是顶点的有序偶对。如果2个顶点间存在一条边,那么就表示这两个顶点存在相邻关系。

7. 堆(Heap)

对是一种特殊的树形数据结构,一般讨论的堆都是二叉堆。堆的特点是根节点的只是所有节点中最小的或最大的,并且根节点的两个子树也是一个堆结构

8. 散列表(Hash)

散列表源自于散列函数,其思想是如果在结构中存在关键字和T相等的记录,那么必定在F(T)的存储位置可以找到该记录,这样就可以不用进行比较操作而直接取得所查记录。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值