第十一章 数据结构
第十一章 数据结构
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 链表的应用
如果需要大量的插入和删除,那么链表是合适是结构,但查找一个链表比查找一个数组要慢
相关文章:

第十一章 数据结构
第十一章 数据结构 11.1 数组 数组是元素的顺序集合,通常这些元素具有相同的数据类型 索引表示元素在数组中的顺序号,顺序号从数组开始处计数 数组元素通过索引被独立给出了地址,数组整体上有一个名称,但每个元素利用数组的的…...

LeetCode704 二分查找
前言 题目: 704.二分查找 文档: 代码随想录——二分查找 编程语言: C 解题状态: 解答错误,变量定义位置错误。 思路 有序数组的查找,最直接的思路应该就是二分查找。但是在查找的过程中要考虑到区间的边界…...

[言简意赅] Matlab生成FPGA端rom初始化文件.coe
🎎Matlab生成FPGA端rom初始化文件.coe 本文主打言简意赅。 函数源码 function gencoeInitialROM(width, depth, signal, filepath)% gencoeInitialROM - 生成 Xilinx ROM 初始化格式的 COE 文件%% 输入参数:% width - ROM 数据位宽% depth - ROM 数据深度% s…...

【QAC】分布式部署下其他机器如何连接RLM
1、 文档目标 解决分布式部署下其他机器如何连接RLMLicense管理器。 2、 问题场景 分布式部署下QAC要在其他机器上单独运行扫描,必须先连接RLMLicense管理器,如何连接? 3、软硬件环境 1、软件版本:HelixQAC23.04 2、机器环境…...

从等保测评看行业安全趋势:洞察与预测
在当今数字化时代,网络安全已成为各行各业的头等大事。等保测评(等级保护测评),作为国家对信息系统安全的重要管理手段,不仅关乎企业的合规性,更是行业安全水平的重要衡量标准。本文将从等保测评的视角出发…...

HTTP模块(二)
HTTP 设置 HTTP 响应报文 HTTP报文常见属性: const http require(http);const server http.createServer((request, response) > {// 设置请求状态码 2xx 4xx 5xxresponse.statusCode 200;// 设置请求描述 了解即可response.statusMessage hello// 指定响…...

引入缓存带来的问题以及解决方案
目录 前言 问题与解决方案 缓存击穿 缓存穿透 缓存雪崩 缓存一致性 前言 在提升接口性能的方案中,毫无疑问,使用缓存是最有效果的,但同时也会带来新的问题。 缓存击穿缓存穿透缓存雪崩缓存一致性 以上问题都是引入缓存需要考虑的&am…...

力扣39题:组合总和的 Java 实现
引言 力扣(LeetCode)是一个在线编程平台,提供了大量的编程题目供开发者练习。第39题“组合总和”是一个经典的回溯算法问题,要求找出所有可能的组合,使得组合中的数字之和等于给定的目标值。本文将介绍如何使用 Java …...

使用el-table实现自动滚动
文章目录 概要技术实现完整代码 概要 在前端开发大屏的时候,我们会用到表格数据展示,有时候为了使用户体验更加好,会增加表格自动滚动。下边我将以示例代码,用element UI的el-table来讲一下。 技术实现 1 .增加dom监听…...

Angular由一个bug说起之八:实践中遇到的一个数据颗粒度的问题
互联网产品离不开数据处理,数据处理有一些基本的原则包括:准确性、完整性、一致性、保密性、及时性。 准确性:是数据处理的首要目标,确保数据的真实性和可靠性。准确的数据是进行分析和决策的基础,因此…...

day13(DNS域名解析)
今天内容: 1、逆向解析 2、多域名 3、时间服务器 4、主从配置 1.设置逆向解析 (1)永久配置我们自己的DNS服务器 (2)关闭NetworkManager服务 NetworkManager 的自动管理功能可能会干扰定制化的网络配置。 在需要切换…...

uboot的mmc partconf命令
文章目录 命令格式参数解释具体命令解释总结 mmc partconf 是一个用于配置 MMC (MultiMediaCard) 分区的 U-Boot 命令。具体来说,这个命令允许你设置或读取 MMC 卡的分区配置参数。让我们详细解释一下 mmc partconf 0 0 1 0 命令的含义。 命令格式 mmc partconf &…...

数据结构经典测题3
1. 设有定义: char *p; ,以下选项中不能正确将字符串赋值给字符型指针 p 的语句是【多选】( ) A: pgetchar(); B: scanf("%s",p); C: char s[]"china"; ps; D: *p"china"; 答案为ABD A选项&…...

tensorboard add_text() 停止自动为尖括号标记添加配对的结束括号</>
问题 调用tensorboard的add_text()记录文本信息时,如果文本中含有含尖括号的标记,就会被自动识别为html标记,因此tensorboard会自动生成对应的带斜杠的结束标记。 例如要记录的文本是 abc<abc>,在tensorboard中就会显示为a…...

sql-libs通关详解
1-4关 1.第一关 我们输入?id1 看回显,通过回显来判断是否存在注入,以及用什么方式进行注入,直接上图 可以根据结果指定是字符型且存在sql注入漏洞。因为该页面存在回显,所以我们可以使用联合查询。联合查询原理简单说一下&…...

【STM32】当按键具有上拉电阻时GPIO应该配置什么模式?怎么用按键去控制LED翻转?
当按键具有上拉电阻时,可以通过正确配置STM32的GPIO端口和编写相应的控制代码来实现按键控制LED灯的功能。具体来说,需要配置按键所连接的GPIO端口为输入模式,并启用内部上拉电阻,这样在按键未操作时该端口保持高电平状态…...

EXO-chatgpt_api 解释
目录 chatgpt_api 解释 resolve_tinygrad_tokenizer 函数 resolve_tokenizer 函数 调试和日志记录 参数 返回值 初始化方法 __init__ 异步方法 注意事项 chatgpt_api 解释 展示了如何在一个项目中组织和导入各种库、模块和类,以及如何进行一些基本的We…...

新能源汽车的充电网络安全威胁和防护措施
1. 物理攻击:例如恶意破坏、搬走充电设施等,这可能会对充电设施造成损害,妨碍正常的电力传输。 2. 网络攻击: 黑客可能利用系统漏洞攻击网络,破坏设备,并窃取用户的个人信息、支付信息等; 车辆…...

Linux中利用消息队列给两个程序切换显示到前台
消息队列–两个进程间的通信 需求: 1.在Linux系统中2.两个ui界面的程序切换,一个显示,另一个隐藏 .h #ifndef PROGRAMWINDOWSWITCH2_H #define PROGRAMWINDOWSWITCH2_H#include <QObject> #include <QThread> #include <Q…...

C语言实例-约瑟夫生者死者小游戏
问题: 30个人在一条船上,超载,需要15人下船。于是人们排成一队,排队的位置即为他们的编号。报数,从1开始,数到9的人下船,如此循环,直到船上仅剩15人为止,问都有哪些编号…...

算法类学习笔记 ———— 红绿灯检测
文章目录 介绍基于传统视觉方法的检测基于颜色和边缘信息基于背景抑制 基于深度学习的检测特征金字塔网络(FPN)红绿灯检测特征金字塔自下而上自上而下横向连接 特征融合SSD红绿灯检测 高精度地图结合 介绍 红绿灯检测就是获取红绿灯在图像中的坐标以及它…...

git命令使用详细介绍
1 环境配置 设置的信息会保存在~/.gitconfig文件中 查看配置信息 git config --list git config user.name设置用户信息 git config --global user.name "有勇气的牛排" git config --global user.email “1809296387qq.com”2 获取Git仓库 2.1 本地初始化一个仓…...

WebStorm中在Terminal终端运行脚本时报错无法加载文件进行数字签名。无法在当前系统上运行该脚本。有关运行脚本和设置执行策略的详细信息,请参阅
错误再现 我们今天要 在webstorm用终端运行脚本 目的是下一个openAPI的 前端请求代码生成的模块 我们首先从github上查看官方文档 我们根据文档修改 放到webstorm终端里执行 报错 openapi : 无法加载文件 C:\Users\ZDY\Desktop\多多oj\dduoj\node_modules\.bin\openapi.p…...

【Java题解】以二进制加法的方式来计算两个内容为二进制数字的字符串相加的结果
🎉欢迎大家收看,请多多支持🌹 🥰关注小哇,和我一起成长🚀个人主页🚀 👑目录 分析:🚀 数字层面分析⭐ 字符串层面分析⭐ 代码及运行结果分析:Ƕ…...

docker -v 到底和那个一样?type=volume还是type=bind的解释
逐行通俗详细的解释下这个代码“#!/usr/bin/env bash # # This script will automatically pull docker image from DockerHub, and start a daemon container to run the Qwen-Chat web-demo.IMAGE_NAMEqwenllm/qwen:2-cu121 QWEN_CHECKPOINT_PATH/path/to/Qwen-Instruct PORT…...

linux自动化构建工具--make/makefile
目录 1.make/makefile介绍 1.1基本认识 1.2依赖关系、依赖方法 1.3具体操作步骤 1.4进一步理解 1.5默认设置 1.6make二次使用的解释 1.7两个文件的时间问题 1.8总是被执行 1.9特殊符号介绍 1.make/makefile介绍 1.1基本认识 make是一个指令,makefile是一…...

学习记录——day15 数据结构 链表
链表的引入 顺序表的优缺点 1、优点:能够直接通过下标进行定位元素,访问效率高,对元素进行查找和修改比较快 2、不足:插入和删除元素需要移动大量的元素,效率较低 3、缺点:存储数据元素有上限,当达到MAX后,就不能再…...

vue3实现在新标签中打开指定的网址
有一个文件列表,如下图: 我希望点击查看按钮的时候,能够在新的标签页面打开这个文件的地址进行预览,该如何实现呢? 比如: 实际上要实现这个并不难,参考demo如下: 首先&#x…...

Qt基础 | QSqlTableModel 的使用
文章目录 一、QSqlTableModel 的使用1.主窗口MainWindow类定义2.构造函数3.打开数据表3.1 添加 SQLite 数据库驱动、设置数据库名称、打开数据库3.2 数据模型设置、选择模型、自定义代理组件、界面组件与模型数据字段间的数据映射 4.添加、插入与删除记录5.保存与取消修改6.设置…...

RPA软件-影刀使用
流程自动化 影刀将操作进行抽象,分为一下几个对象: 网页自动化 (1) 网页自动化应用场景:网页操作、数据抓取 (2) 网页操作:基础操作-指令操作,智能操作-关联元素&#…...