数据结构与算法-线性表介绍

结构

结构是一些实体以及这些实体之间的关系,也就是节点与节点之间的连边组成的图,例子分子结构,微信的社会网路关系结构等。
结构是一些实体以及这些实体之间的关系,也就是节点与节点之间的连边组成的图,例子分子结构,微信的社会网路关系结构等。

三个特征:

1;逻辑关系组织起一批数据

逻辑关系可能会有一些很好的性质,有助于·我们有效的进行存储和运算。

2;数据按照存储方法存储起来

存储结构CPU只能对组织在内存的数据进行计算
可以说数据结构是由逻辑、存储和运算三个方面组成的,在不同的运用场景下,我们强调数据结构的不同侧面。
可以说数据结构是由逻辑、存储和运算三个方面组成的,在不同的运用场景下,我们强调数据结构的不同侧面。

3;在这些数据上定义了一个运算的集合

基本的数据类型

整数(integer)
实数(real)
布尔类型(boolean)
C/C++语言0表示false,非0表示true
也支持false,true保留字
字符类型
ASCII用单个字节(最高位为0)表示字符
汉字符需用2个字节的表示
指针用来指向内存地址,现在主流的64位机器,指针类型占8字节。指针操作可以实现与内存相关的程序功能,比如给指针分配地址,给指针变量赋值,指针地址的增减等等。
指针用来指向内存地址,现在主流的64位机器,指针类型占8字节。

复合数据类型

基本数据类型/复合数据类型组成的复杂结构
例如:
– 数组:int A[100]
– 结构:typedef struct{} B;
– 类:class C{ };

逻辑结构主要分为线性和非线性两大类

线性结构就是数组、链表等线性表

线性表是数据结构中最简单的一种结构,根据线性结构的存储类型,分为顺序表和链表。
顺序表就是数组,也称为向量vector高维向量称为张量即tensor。
链表的分类分为单链表、双链表、循环链表等。
在这里插入图片描述

线性结构是由节点集和关系集组成的二元组,节点集由有限的顺序元组组成;关系集由前驱和后继关系组成。
前驱/后继关系r,具有 反对称性 和 传递性
在这里插入图片描述

在线性结构中,头一个称为表头,最后一个称为表尾,其他称为内部元素。

线性表中的相关概念
·线性表简称表,是零个或多个元素的有穷序列,线性表的每个节点都由同类型的元素组成。通常可以表示成K0,k1,···,kn-1(n≥1)。
-表目:线性表中的元素(可包含多个数据项,记录)元素长度是均匀的,元素位置是有序的,线性表元素的逻辑结构在存储上也需要对应的表达。
线性表的存储结构
-索引(下标):i称为表目ki的’’索引’’或 ‘’下标’’,元素在线性表中的位置称为下标或者是索引,元素的个数称为表长。
-表的长度:长度为零的线性表(n=0),为0的表就是空表,线性表易于存储和操作
对于小规模的应用采用简单的线性表来实现是非常有效的。

线性结构划分:
-直接访问型:向量、记录。可以根据下标定位元素的位置,例如数组向量就是直接访问的线性表。单个的记录类型也是线性结构。
-顺序访问型:顺序文件、栈、队列、广义表。顺序访问型必须在表中挨个查找所需元素,例如链表为了提高检索的速度
-目录索引型:字典、散列表
在这里插入图片描述

线性表的三个方面:
·线性表的逻辑结构
·线性表的存储结构
·线性表运算
线性表的逻辑结构主要属性包括:
-线性表的长度
-表尾
-当前位置 记录当前位置有利于相关的运算
在这里插入图片描述

线性表的存储结构:
·顺序表
-顺序表是一个非常高效的存储结构,物理存储关系就表达了逻辑关系,不需要额外的存储域来表达逻辑上的相邻关系,可以非常紧密地存储相关数据。按索引之从小到大存放在一篇相邻的连续区域
-紧凑结构,存储密度就是有效元素占存储空间的比例可以达到1。
在这里插入图片描述

·链表
链表需要通过指针链接的关系来表达逻辑的序。因此需要指针的额外存储空间。
-单链表
-双链表
-循环链表
在这里插入图片描述

链表和顺序表的对比:
链表的存储效率不如顺序表:

线性表分类(按操作)
·线性表:-不限制操作
·栈 :-在同一端操作
栈的插入和删除限制在同一端进行,栈的先进后出性质在深度优先搜索、递归等算法中有很好的应用。
·队列 :-在两端操作
队列的插入和删除分别在两端进行,队列的先进先出性质在宽度优先搜索、层次化处理算法中有很好的应用。

栈(LIFO, Last In First Out) – 插入和删除操作都限制在表的同一端进行
栈可以说是最简单的组合数据结构,栈顶随着元素的增减而发生变化。栈底没有暴露被弹出的化会被一直压着不发生变化。编译系统的调用底层就是,递归栈来支持的。深度优先方法的递推处理,也要用到栈。
在这里插入图片描述

队列(FIFO, First In First Out) – 插入操作在表的一端, 删除操作在另一端
队列跟栈一样是一种基础数据结构,按先入先出的调度算法,以及宽度优先搜索等算法都需要用到队列。

对于一个数据结构,往往要考虑怎么样建立这个数据结构,以及销毁这个结构,把对应的存储空间返回给内存。

在线性表中往往是先getPos找到指定元素,然后再做插入删除修改操作,有的情况可以删除旧值再添加新值。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值