多个数组中的值 取相同_数据结构基础-数组

a740b17cba34fcac2f8e60798da9f351.png

C语言是一门面向过程、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括一些类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。

C语言是一门面向过程的计算机编程语言,与C++、Java等面向对象编程语言有所不同。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。C语言描述问题比汇编语言迅速、工作量小、可读性好、易于调试、修改和移植,而代码质量与汇编语言相当。C语言一般只比汇编语言代码生成的目标程序效率低10%~20%。因此,C语言可以编写系统软件。

当前阶段,在编程领域中,C语言的运用非常之多,它兼顾了高级语言的汇编语言的优点,相较于其它编程语言具有较大优势。计算机系统设计以及应用程序编写是C语言应用的两大领域。同时,C语言的普适较强,在许多计算机操作系统中都能够得到适用,且效率显著。

冯.诺依曼在1945年提出了现代计算机的若干思想,被后人称为冯.诺依曼思想,这是计算机发展史上的里程碑。自1945 年至今大多采用其结构,因此冯.诺依曼被称为计算机之父。他的体系结构计算机由运算器、控制器、存储器、输入设备、输出设备五大部件构成。 C语言拥有一套完整的理论体系经过了漫长的发展历史,在编程语言 中具有举足轻重的地位。

29166aee0cd2c5de70246572268944bf.png

数组
数组是定长线性表在维数上的扩展,即线性表中的元素又是一个线性表。n维数组是一种”同构“的数据结构,也就是指其每个数据元素类型相同、结构相同。
数组其实就是同一类型的多个变量的集合。
数组元素的特点:

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

数组的基本运算:

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

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

4c5d50199e0d935f397ad666f7ebdd0c.png


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。

  • 基本操作

广义表的操作与线性表类似,但由于广义表的结构比较复杂,运算的实现也不如线性表简单,下面列出两个比较特殊的运算:取表头:非空广义表的第一个元素称为表头,它可以是一个单元素,也可以是一个子表。取表尾:非空广义表除表头元素之外,由其余元素构成的表称为表尾。非空广义表的表尾必定是一个表。

  • 存储结构:

广义表中的元素本身又可以具有结构,它是一种带有层次的非线性结构,因此难以用顺序存储结构表示,通常采用链式存储结构。
非空广义表可以分解为表头和表尾两部分,反之,一对确定的表头和表尾可唯一确定一个广义表。
广义表的元素有两种类型,因此链表结点结构也有两种,如下图所示,

2ae7a5567a846eb78fd79b96d10777aa.png


广义表链表结点结构
tag 标记位:区分是原子还是子表,通常原子的 tag 值为 0,子表的 tag 值为 1。
hp 指针:用于连接本子表中存储的原子或子表。
tp 指针:用于连接广义表中下一个原子或子表。
对于广义表C=(a,(b,c,d)),链式存储结构如下图所示:

70c5b20663a3c3b3eabf59ddad6af004.png

赠送C/C++程序员必备学习资料,C语言真题+PDF,点击:➤领取➲

ed0c679e9d4deadb949e621e46dae973.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值