title: 数据结构概述总览
categories:

  • 数据结构算法
    tags:
  • 数据结构
  • 概览

数据结构要搞清楚的三个问题

主要内容:数据的逻辑结构、数据的存储在计算机中的存储结构、定义在数据集合上的运算

1.数据的逻辑结构

数据结构概述总览

1.1线性结构

定义:只有一个开始结点和一个终端结点,其余的结点都有且仅有一个前驱结点和一个后继结点
数据结构概述总览

1.2树型结构

定义:有一个开始结点,多个终端结点,除开始结点外,每个结点都有且只有一个前驱结点。像一个根节点出发,不断分叉的树一样。
数据结构概述总览

1.3图形结构

定义:每个结点都可以有多个前驱和后继。像错综复杂的旅游景点路线
数据结构概述总览

2.数据的存储结构

数据结构概述总览

2.1顺序存储

逻辑上连续的数据,在物理存储使用连续的空间存储
典型的采用顺序存储是数组

2.2链接存储

给每个结点添加一个指针段,指向后继结点的存储地址,逻辑上相邻的结点可以存储在不相邻的物理空间上
典型的采用链接存储是单链表

2.3索引存储

索引存储中每一个结点都有一个唯一的索引号,根据结点的索引号确定该结点的存储地址。建立一个索引表,里面存储的是索引号和对应的存储地址,就像书的目录一样,前面是章节索引号,后面的页码就是对应的地址。

2.4散列存储(Hash存储)

散列存储的思想是构造一个从集合K到存储区域M的函数h,该函数的定义域为K,值域为M,其中K为从每个结点中提取的关键字,通过H该结点的存储地址由好h(K)确定。散列存储是通过关键字K来查找的,数据是离散无序的分布的。

3.索引和散列的区别

一直以来我对索引和散列的区别不是很清晰,我现在的理解如下:

它和索引的区别是,索引存储要先通过索引号查找索引表再找到对应地址,而散列只需要通过关键字key,通过函数就可以直接得到地址。表述也许不清楚,举个例子说明吧

索引就像是两个学生都在找寝室,学生A记住了整个学校寝室表内容
(寝室号——寝室地址),而学生B记住了学校寝室号与寝室地址对应的函数关系,那么同样找寝室号为1S508的寝室,学生A,根据1S508在脑子里搜索自己记忆的学校寝室表,找到表中1S508对应的是1栋南5楼8号寝室,而学生B,根据知道的寝室号与地址的对应规则(函数关系),通过1S508从脑子里计算出地址为1栋南5楼8号寝室。

3.数据的运算集合

内容:数据的运算集合定义在数据的逻辑结构上,依赖数据在计算机中的存储结构来实现。
常用的运算包括插入、删除、增加等

最后用一张图总结一下吧

数据结构概述总览

相关文章: