数据结构概念

数据结构包括逻辑结构和存储结构,逻辑结构有线性结构、树状结构和网络结构。线性结构如线性表,有四个基本特征;树状结构具有1对多的关系;网络结构是多对多的联系。存储结构有顺序存储、链式存储、索引存储和散列存储,各有优缺点。顺序存储节省空间,但插入删除效率低;链式存储灵活,但存储密度小;索引存储通过索引表标识地址;散列存储提供快速添加和查询。
摘要由CSDN通过智能技术生成

数据结构

数据结构=逻辑结构+存储结构+(在存储结构上的)运算/操作
在这里插入图片描述
举例:
线性表的逻辑结构如图所示:
在这里插入图片描述

线性表逻辑结构对应的顺序存储结构为顺序表,对应的链式存储结构为链表。
顺序表
在这里插入图片描述

链表
在这里插入图片描述

同一逻辑结构可以对应多种存储结构。
同样的运算,在不同的存储结构中,其实现过程是不同的

一、逻辑结构
(1)线性结构:

数据结构中线性结构指的是数据元素之间存在着“一对一”的线性关系的数据结构。

  • 线性表就是一个典型的线性结构,它有四个基本特征:
    1.集合中必存在唯一的一个"第一个元素";
    2.集合中必存在唯一的一个"最后的元素";
    3.除最后元素之外,其它数据元素均有唯一的"直接后继";
    4.除第一元素之外,其它数据元素均有唯一的"直接前驱"。
(2)树状结构:

除了一个数据元素(元素 01)以外每个数据元素有且仅有一个直接前驱元素,但是可以有多个直接后续元素。
特点是数据元素之间是 1 对 多的联系

(3)网络结构(图):

每个数据元素可以有多个直接前驱元素,也可以有多个直接后续元素。特点是数据元素之间是多对多的联系

二、存储结构

数据的存储结构主要包括数据元素本身的存储以及数据元素之间关系表示,是数据的逻辑结构在计算机中的表示。
常见的存储结构有顺序存储,链式存储,索引存储,以及散列存储

(1)顺序存储结构
  • 概念
    把逻辑上相邻的节点存储在物理位置上相邻的存储单元中,结点之间的逻辑关系由存储单元的邻接关系来体现。
    由此得到的存储结构为顺序存储结构,通常顺序存储结构是借助于计算机程序设计语言(例如C/C++)的数组来描述的。
    (数据元素的存储对应于一块连续的存储空间,数据元素之间的前驱和后续关系通过数据元素,在存储器中的相对位置来反映)

  • 优点:
    1.节省存储空间,因为分配给数据的存储单元全用存放结点的数据(不考虑c/c++语言中数组需指定大小的情况),结点之间的逻辑关系没有占用额外的存储空间。
    2.采用这种方法时,可实现对结点的随机存取,即每一个结点对应一个序号,由该序号可以直接计算出来结点的存储地址。

  • 缺点:
    1.插入和删除操作需要移动元素,效率较低。
    2.必须提前分配固定数量的空间,如果存储元素少,可能导致空闲浪费。

(2)链式存储结构:
  • 概念
    数据元素的存储对应的是不连续的存储空间,每个存储节点对应一个需要存储的数据元素。
    每个结点是由数据域和指针域组成。 元素之间的逻辑关系通过存储节点之间的链接关系反映出来。
    逻辑上相邻的节点物理上不必相邻。
  • 优点:
    1、插入、删除灵活 (不必移动节点,只要改变节点中的指针)。
    2.有元素才会分配结点空间,不会有闲置的结点。
  • 缺点:
    1、比顺序存储结构的存储密度小 (每个节点都由数据域和指针域组成,所以相同空间内假设全存满的话顺序比链式存储更多)。
    2、查找结点时链式存储要比顺序存储慢。
(3)索引存储结构:

除建立存储结点信息外,还建立附加的索引表来标识结点的地址。
比如图书、字典的目录
在这里插入图片描述

(3)散列存储结构:

根据结点的关键字直接计算出该结点的存储地址 HashSet HashMap
一种神奇的结构,添加、查询速度快。
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值