数据结构学习(一)

一、为什么要学习数据结构

   因为数据结构不同,程序的运行速度可能相差多个数量级。如果你写的程序要处理大量的数据,或者要让数千人同时使用,那么你采用何种数据结构,将决定它是能够运行,还是会因为不堪重负而崩溃。
   一旦对各种数据结构有了深刻的理解,并明白它们对程序性能方面的影响,你就能写出快速而优雅的代码,从而使软件运行得快速且流畅。当然,你的编程技能也会更上一层楼。

1.高级计算机程序设计的理论指导
2.提高编程能力

二、有哪些数据结构

线性表、栈、队列、(字符)串、数组、广义表、树、二叉树、图

三、基本概念

   数据:数据是客观描述事物的数值、字符以及能输入机器且能被处理的各种符号集合。
   数据的含义非常广泛,除了通常的数值数据、字符、字符串是数据以外,声音、图像等一切可以输入计算机并能够被处理的都是数据。
列如除了表示人的姓名、身高、体重等字符、数字是数据,人的照片、指纹等都是数据

   数据项:具有原子性,是不可在分割的最小单位。如描述学生相关的姓名、性别、学号等都是数据项

   数据元素:数据元素是数据的基本单位,是数据集合的个体,通常由若干个数据项组成,在计算机程序中通常作为一个整体来进行处理。列如一条描述一个学生的完整信息的数据记录就是一个数据元素;

    数据对象:性质相同的数据元素的集合,是数据的字集。
列如一个学校的所有学生的集合就是数据对象,空间中所有的集合也是数据对象

关于数据结构:
一种是数据结构的逻辑层面,即数据的逻辑结构
一种是存在于计算机世界的物理层面,即数据的存储结构

数据结构=逻辑结构+存储结构
数据结构=逻辑结构+存储结构+(在存储结构上的)运算/操作

四、数据结构的类型

数据的逻辑结构指数据元素之间的逻辑关系(和实现无关)

4.1、分类一:线性结构和非线性结构

4.1.1、线性结构

   线性结构:有且只有一个开始节点和一个终端节点,并且所有的节点都只有最多一个直接前驱和一个直接后继。
  线性表就是一个典型的线性结构,它有四个基本特征:
1.集合中必存在唯一的一个“第一个元素”
2.集合中必存在唯一的一个“最后的元素”
3.除最后的元素之外,其它数据元素均有唯一的后继
4.除第一元素之外,其它数据元素均有唯一的前驱

4.1.2、非线性结构

   相对于线性结构,非线性结构的逻辑特征是一个结点元素可能对应多个直接前驱和多个直接后继。

4.2、分类二:集合结构、线性结构、树状结构、网格结构

  逻辑结构有四种基本类型:集合结构、线性结构、树状结构和网格结构。
  表和树是最常用的两种高效数据结构,许多高效的算法能够用这两种数据结构来设计实现

4.2.1、集合结构:

  就是数学中所学习的集合。集合中的元素有三个特征:
1.确定性
2.唯一性
3.无序性

4.2.2、线性结结构

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

4.2.3、树状结构

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

4.2.4、网络结构

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

4.3、数据的存储结构

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

  顺序存储结构:把逻辑上相邻的节点存储在物理位置上相邻的存储单元中,节点之间的逻辑关系由存储单元邻接关系体现。由此得到的存储结构为顺序存储结构,通常顺序存储结构是借助于计算机程序设计语言(如c/c++)的数组来描述的。( 数据元素的存储对应于一块连续的存储空间,数据元素之间的前驱和后续关系通过数据元素,在存储器中相对位置来反映)
  优点:是节省存储空间,因为分配给数据的存储单元全用存放节点的数据(不考虑c/c++语言中数组需要指定大小的情况),节点之间的逻辑关系没有占用额外的存储空间
采用这种方法时,可实现对节点的随机存取,即每一个节点对应一个序号,由该序号可以直接计算出来节点的存储地址
缺点:插入和删除操作需要移动元素,效率低。

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

  索引存储结构
除建立存储节点信息外,还建立附加的索引表来标识节点的地址。
比如图书、字典的目录

  散列存储结构
根据节点的关键字直接计算出该结点的存储结构
一种神奇的结构,添加、查找速度快

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值