数组

数组是定长线性表在维数上的扩展,即线性表中的元素又是一个线性表。

n维数组是一种”同构“的数据结构,也就是指其每个数据元素类型相同、结构相同。

数组其实就是同一类型的多个变量的集合。

数组元素的特点:

  • 数据元素数目固定,一旦定义了一个数组结构,就不再有元素个数的增减变化。
  • 数据元素具有相同的类型。
  • 数据元素的下标关系具有上下界的约束且下标有序。

数组的基本运算:

  • 给定一组下标,存取相应的数据元素。
  • 给定一组下标,修改相应的数据元素中某个数据项的值。

如在JAVA中,数组的操作如下图所示:

JAVA数组操作

数组的顺序存储:

数组一般不做插入和删除运算,一旦定义了数组,则结构中的数据元素个数和元素之间的关系就不再发生变动,因此数据适合于采用顺序存储结构

广义表

广义表是由0个或多个单元素或子表组成的有限序列,是线性表的推广。

广义表与线性表的区别:

线性表的元素都是结构上不可分的单元素,而广义表可以是单元素,也可以是有结构的表。

广义表一般记为:LS = (a1,a2,...,an),n>=1。其中a1...an等元素既可以是单个元素,也可以是广义表。分别称为原子和子表。

广义表通常用圆括号括起来,用逗号分隔其中的元素,书写时用大写字母表示广义表,用小写字母表示原子。

广义表的长度与深度:

长度:指广义表中元素的个数。

深度:指广义表展开后,所含的括号的最大层数。

如:

N=(), N是一个空表,其长度为0。

L=(a,b),L是长度为2的广义表,它的两个元素都是原子,深度为1

M=(x,L)=(x,(a,b)),M是长度为2的广义表,第一个元素是原子x,第二个元素是子表L,深度为2。

  • 基本操作

广义表的操作与线性表类似,但由于广义表的结构比较复杂,运算的实现也不如线性表简单,下面列出两个比较特殊的运算:

取表头:非空广义表的第一个元素称为表头,它可以是一个单元素,也可以是一个子表。

取表尾:非空广义表除表头元素之外,由其余元素构成的表称为表尾。非空广义表的表尾必定是一个表。

  • 存储结构:

广义表中的元素本身又可以具有结构,它是一种带有层次的非线性结构,因此难以用顺序存储结构表示,通常采用链式存储结构

非空广义表可以分解为表头和表尾两部分,反之,一对确定的表头和表尾可唯一确定一个广义表

广义表的元素有两种类型,因此链表结点结构也有两种,如下图所示,

广义表链表结点结构

tag 标记位:区分是原子还是子表,通常原子的 tag 值为 0,子表的 tag 值为 1。

hp 指针:用于连接本子表中存储的原子或子表。

tp 指针:用于连接广义表中下一个原子或子表。

对于广义表C=(a,(b,c,d)),链式存储结构如下图所示:

广义表(a,(b,c,d))存储结构示意图

jpa query 取数组第一个_数据结构基础-数组相关推荐

  1. Kiner算法刷题记(二十一):字典树与双数组字典树(数据结构基础篇)

    字典树与双数组字典树(数据结构基础篇) 系列文章导引 系列文章导引 开源项目 本系列所有文章都将会收录到GitHub中统一收藏与管理,欢迎ISSUE和Star. GitHub传送门:Kiner算法算题 ...

  2. 有十五个数按由大到小顺序存放在一个数组中_数据结构基础 (代码效率优化, 线性表, 栈, 队列, 数组,字符串,树和二叉树,哈希表)...

    作者:张人大 代码效率优化 复杂度 -- 一个关于输入数据量n的函数 时间复杂度 -- 昂贵 与代码的结构设计有着紧密关系 一个顺序结构的代码,时间复杂度是O(1), 即任务与算例个数 n 无关 空间 ...

  3. asp子窗口读取父窗口数据_算法与数据结构基础 - 数组(Array)

    数组基础 数组是最基础的数据结构,特点是O(1)时间读取任意下标元素,经常应用于排序(Sort).双指针(Two Pointers).二分查找(Binary Search).动态规划(DP)等算法.顺 ...

  4. 求单链表的最大值与原地逆转_数据结构基础复习09.ppt

    数据结构基础复习09.ppt 数据结构考研辅导 基础复习 浙江大学计算机学院 内容提纲 考研概述 考察目标理解数据结构的基本概念 掌握数据结构的逻辑结构 存储结构及其差异 以及各种基本操作的实现 在掌 ...

  5. 易语言数组转文本_前端基础扫盲系列 长达8000字的数组总结

    本文 GitHub github.com/ponkans/F2E 已收录,有一线大厂前端面试点思维导图,也整理了很多我的文档,欢迎Star和完善,大家面试可以参照考点复习.文末有福利~~ 前言 数组是 ...

  6. java创建数组并赋值_「java 数组」Java创建数组的方法 - seo实验室

    java 数组 最近学java,一点小心得,希望和大家分享一下,第一次写文章,写的不好希望大家谅解,当然我也会尽力写好这篇文章! Java创建数组的方法大致有三种 说明:这里以int为数据类型以arr ...

  7. c语言如何答应出数所在数组的下标_零基础学C语言——数组

    这是一个C语言系列文章,如果是初学者的话,建议先行阅读之前的文章.笔者也会按照章节顺序发布. 上一篇我们讨论过函数,其中涉及到了一些数组和指针,本篇详细说明数组. 数组定义 数组是一种集合结构,与数学 ...

  8. java数组可扩展_[转载]Java数组扩容算法及Java对它的应用

    Java数组扩容的原理 1)Java数组对象的大小是固定不变的,数组对象是不可扩容的. 2)利用数组复制方法可以变通的实现数组扩容. 3)System.arraycopy()可以复制数组. 4)Arr ...

  9. c#二叉树 取叶子节点个数_数据结构第四章:树与二叉树(二叉树的概念、性质、特殊二叉树)...

    第四章:树与二叉树(二叉树的逻辑结构) 1.二叉树 二叉树是树结构的一种,故二叉树也是逻辑结构. 二叉树:二叉树是n(n≥0)个结点的有限集合. · 1)n=0时,二叉树为空; · 2)n>0时 ...

最新文章

  1. Chrome_调试js出现Uncaught SyntaxError: Unexpected identifier
  2. ibmmq 通道命令_IBM MQ 从接收通道获取数据
  3. Ionic+Angular+Express实现前后端交互使用HttpClient发送get请求数据并加载显示(附代码下载)
  4. linux sed i 大文件,sed -i   修改链接文件注意事项   破坏了原文件
  5. 巧用apply让javascript函数仅执行一次
  6. SQL转化为MapReduce的过程
  7. 持续集成(CI)- 各种工具的资料总结
  8. Path(0)贝塞尔曲线
  9. day 67 django 之ORM 增删改查基础
  10. mongodb默认的用户名密码_Windows下MongoDB设置用户、密码
  11. APM应用性能管理的过去二十年
  12. BZOJ 3744: Gty的妹子序列 [分块]
  13. uni-app配置代理
  14. 初识C语言———C语言基础入门
  15. windows server 远程登录后总是出现屏幕键盘,烦死人了
  16. 错排公式——n封信放入n个信封,要求全部放错,共有多少种放法
  17. php 坦克大战,js坦克大战以实现炮弹击中目标消失并且记分
  18. 应届生如何做好一份简历?
  19. 人参果水果宣传文案模版,水果店文案人参果
  20. php连接mysql错误:Call to undefined function mysql_connect()

热门文章

  1. Query String Object 2.1.7
  2. 让 windows 的桌面 干净。。。再干净点。。。
  3. VS2015下OpenGL库的配置
  4. VC++实现任务管理器功能
  5. 四旋翼姿态解算——基础理论及推导
  6. Toolbar+DrawerLayout
  7. ifstream note
  8. UART的FIFO功能
  9. Linux系统检测命令有哪些
  10. html定义好的css样式不能被渲染