数据结构小白学习笔记(一) 数据结构基本概念 顺表和链表

数据结构学习笔记

    • 基本定义
    • 基本概念和术语
      • 逻辑结构
      • 物理结构
      • 顺序表(线性结构)
      • 链表(线性结构)

基本定义

数据结构是一门问题驱动型学科。将生活中所遇到的无论是简单还是复杂问题统分为四类问题来进行解决,找出问题中的数据与数据间的关系。数据结构可分为三块:第一 :逻辑结构;第二: 存储结构(物理结构);第三: 算法的实现。这是数据结构学科中的主要学习内容同时也是数据结构的基本定义。

基本概念和术语

数据:能输入计算机并可以被计算机程序进行处理内容集合(声音,图片,字符等)。
数据元素:数据的基本单位(数据之间存在紧密联系,合在一起便成为数据元素。如在一个Excel表格中,每一行称为数据元素)。
数据项:数据的不可分割的最小单位(Excel表中,每一行的每一列便为一个数据项)。
数据对象:性质相同的数据元素的集合。
ADT:抽象数据类型。表示应用问题的数据模型,以及定义在这个模型上的一系列操作的名称,具体可分为三部分:数据对象,数据对象间的关系集合,以及对其进行的基本操作集合。抽象(Abstract)指的是对数据以及定义在数据上的操作的学习是以一种独立于如何实现的方式去进行学习的。
ADT抽象数据类型名{
数据对象:<数据对象的定义>
数据关系:<数据关系的定义>
基本操作:<基本操作的定义>
}
算法:一系列确定且在有限步骤内完成的操作(有穷性,确定性,有效性)。
算法的设计与与要求:
1)正确性
2)可读性
3)健壮性(容错性)
4)效率与存储需求(时间复杂度(大O法与频度法)与空间复杂度)

逻辑结构

逻辑结构:数据元素之间的逻辑关系(设计算法-数学模型)。
逻辑结构为四种:
集合:元素仅属于同一个集合除此之外并无其他关系。
线性结构:存在一对一关系,序列相邻,次序关系(线性表,栈,队列,串,数组等,集合可称
为最简单的线性结构)。
树型结构:存在一对多关系,层次关系。
图状结构:存在多对多关系,任意性。

物理结构

物理结构:数据结构在计算机中的映像(存储结构-算法的实现)。
物理结构为四种:
顺序存储结构:按内存地址的连续存储方式(物理相邻与逻辑相邻一致)。
链式存储结构:不连续的一种存储结构(利用空间存放关系(指针))(单向链表,双向链表,循环链表)。
索引存储结构:在存储节点的同时,还建立附加的索引表,索引表中的每一项称为索引项,形式为:关键字,地址。
散列存储结构(哈希):根据结点的关键字直接计算出该结点的存储地址。

顺序表(线性结构)

顺序表:线性表中的顺序存储结构。有且仅有一个直接后继,有且仅有一个直接前驱,有且仅有一个开始结点,有且仅有一个结束结点。

  1. 用"物理位置"相邻来表示线性表中数据元素之间的逻辑关系。
  2. 确定了线性表中的起始位置,线性表中的任一数据元素都可以随机存取,因为线性表中的存储结构是一种随机存取的存储结构。

例:存入10,20,30,40

内存
10
20
30
40

例:插入35到30,40之间

内存 (40下移) 内存(插入之前空出的位置)
10 10
20 20
30 30
40 35
可用内存 40

插入35,标识40所在位置,进行下移。删除时同样标识数据元素所在位置,进行元素的移动。
由此可见顺序表在插入以及删除的过程中,会有内存的移动,因此会造成性能的损耗。
所以顺序表具有高效查找,低效插入删除的特点。

链表(线性结构)

解决顺序存储结构低效插入删除的问题。
分类:单向链表(带头结点,无头结点),双向链表(带头结点,无头结点),循环链表(带头结点,无头结点)。
特点:在内存中用一组任意的存储单元来存储线性表的数据元素,用每个数据元素所带的指针来确定其后继元素的存储位置。这两部分信息组成数据元素的存储映像,称作结点。
结点:指针域+数据域。
数据结构小白学习笔记(一) 数据结构基本概念 顺表和链表_第1张图片
单链表的存储映射
10=>20=>30

内存地址 内存 链表存储地址
1001 10 1003
1002 /
1003 20 1005
1004 /
1005 30

链式存储插入删除不会进行元素的移动。
为什么引入带头结点的单链表
编程统一简单,插入永远会插在头结点之后,同时删除时不会存在空表。以及方便判断空表.

你可能感兴趣的:(数据结构)