第十一章 数据结构

第十一章 数据结构

11.1 数组

数组是元素的顺序集合,通常这些元素具有相同的数据类型

索引表示元素在数组中的顺序号,顺序号从数组开始处计数

数组元素通过索引被独立给出了地址,数组整体上有一个名称,但每个元素利用数组的的索引来单独访问

11.1.1 数组名与元素名

数组名和元素名:在一个数组中,有两种标识符:数组的名字和各个元素的名字。数组名是整个结构的名字,而元素名允许我们访问这个元素

数组名:如scores

元素名:数组名后面跟一个索引号,如scores[1], scores[2]

11.1.2 多维数组

多维数组:

  • ​ 一维数组
  • ​ 二维数组
  • ​ 多维数组

11.1.3 存储配置

存储配置:一维数组的索引直接定义了元素在实际存储上的相对位置。但是二维数组表示行和列

在内存中如何存储每个元素取决于计算机,大多数计算机使用行主序存储,其中数组的一个整行在内存上存储在下一个行之前,但是计算机也可以使用列主序存储,其中一个整列在内存上存储在下一个列之前

11.1.4 数组操作

数组操作:常用操作有查找、插入、删除、检索、和遍历

查找元素:根据元素的值,找到元素的序号,之前的顺序查找和折半查找

元素的插入:通常计算机语言要求数组的大小,在被定义的时候不能修改。

  • 尾部插入
  • 开始或中间插入

元素的删除

元素检索:根据数组的索引对元素进行存取

数组的遍历:被应用于每个元素的上的操作

11.1.5 数组的应用

数组的应用:当需要进行的插入和删除操作数目较少,而需要大量的查找和检索操作时,数组是合适的结构

11.2 记录

记录是一组相关元素的集合,它们可能是不同的类型,但整个记录有一个名称。记录中的每个元素称为域(属性、字段),域是具有含义的最小命名数据,它有类型且存在于内存中。它能被赋值,反之也能被选择和操纵。域不同于变量主要在于它是记录的一部分

在记录中的元素可以是相同类型或不同类型,但记录中的所有元素必须是关联的

11.2.1 记录名与域名

记录名与域名

记录的名字是整个结构的名字,而每个域的名字允许我们存取这些域

记录的名字是student,域的名字是student.id,student.name和student.grade,大多数编程语言使用点(.)来分隔记录名和它域的名字

11.2.2 记录数组

11.3 链表

链表是一个数据的集合,其中每个元素包含下一个元素的地址,每个元素包含两部分:

  • 数据:包含可用信息,并被处理
  • 链:将数据连在一起,包含一个指向链表中下一个元素的指针(地址)
  • 一个指针变量标识标识该链表中的第一个元素,链表的名字就是该指针变量的名字

节点:链表中的元素称为节点,节点至少包含两个域的记录:一个包含数据,另一个包含链表下一个节点的地址

11.3.1 数组与链表

数组与链表比较

  • 数组与链表都能表示内存中的数据项列表
  • 数组通过索引(角标)来连接
  • 链表通过指向下一个元素的链(地址)来连接
  • 数组在内存中的存储空间是连续的,且定义数组之前大小固定
  • 链表在内存中的存储空间可以是不连续的,链表大小可扩展

11.3.2 链表名与节点名

链表名是头指针的名字,该头指针指向表中第一个节点

节点在链表中并没有明显的名字,有的只是隐含的名字,节点的名字与指向节点的指针有关

指针:指向节点的指针称为p,则称节点为*p,因为节点是一个记录,使用节点的名字来存取节点中的域

11.3.3 链表操作

查找链表

插入节点:从开始处插入

插入节点:末尾处插入

插入节点:中间插入

删除节点:删除首节点

删除节点:删除中间或末尾节点

遍历链表

11.3.4 链表的应用

如果需要大量的插入和删除,那么链表是合适是结构,但查找一个链表比查找一个数组要慢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值