当前位置: 首页 > news >正文

【DAY05 软考中级备考笔记】线性表,栈和队列,串数组矩阵和广义表

线性表,栈和队列,串数组矩阵和广义表 2月28日 – 天气:阴转晴

时隔好几天没有学习了,今天补上。明天发工资,开心😄

1. 线性表

1.1 线性表的结构

首先线性表的结构分为物理结构和逻辑结构

  • 物理结构按照实现不同可以分为
    • 顺序表
    • 链表:单链表,循环列表和双向链表
  • 逻辑结构:在存储中,除了第一个元素和最后一个元素,每一个元素只有一个直接前驱和直接后继。对于第一个元素来说,只有一个直接后继。对于最后一个元素来说,只有一个直接前驱。

在这里插入图片描述

在这里插入图片描述

这里可以理解为链表和数组的区别。

1.2 线性表的定义

在这里插入图片描述

1.3 线性表的插入和删除操作
  • 首先对于顺序存储来说,基本上插入和删除操作都是需要移动元素的。除非在最后一个元素之后插入元素,或者删除最后一个元素。因此更适合读取操作频繁的数据。
  • 对于链表而言,插入和删除操作不需要进行元素的移动。因此更适合写入比较频繁的数据

下面对于三种不同的链表的插入删除的操作进行详解

  • 单链表的插入

数据结构与算法——链式存储(链表)的插入及删除,

p->next=q->next; 
q->next=p;
  • 单链表的删除

数据结构与算法——链式存储(链表)的插入及删除,

p=pre->next;
pre->next=p->next;

或者

pre->next = pre->next->next;
  • 双链表的插入

img

node->next = p->next;
node->pre = p;
p->next->pre = node;
p->next = node;
  • 双链表的删除

img

p->next = deleteNode->next;
deletNode->next->pre = = p;

2. 栈和队列

2.1 栈

栈是一种特殊的线性表,只允许在一端进行插入和删除

在这里插入图片描述

使用栈来进行括号匹配的方法:https://zhuanlan.zhihu.com/p/134675879

2.2 队列

也是一种特殊的线性表,只允许在一端进行插入,在另一端进行删除

在这里插入图片描述

其中比较复杂的队列是循环队列

在这里插入图片描述

这里重点是记住循环队列队满和队空的条件

例题的解题方法为带入排除法

3. 串

串是由有限个字符构成的有限序列,是取值范围受限的线性表。如串S="a1a2a3a4",其中S为串名,a1a2a3a4为串值。

除此之外,还有一些其他的概念也需要掌握:

  • 空串:长度为零的串,不包含任何字符
  • 空哥串:包含一个或多个空格组成的串
  • 子串:由串中任意长度的连续字符构成的序列成为子串。含有子串的字符串成为主串。子串在主串中的位置指的是子串首次出现主串时,该子串第一个字符在主串中的位置。

空串时任意串的子串

  • 串相等:两个串长度相等且对应位置上的字符也相等。
  • 串比较:两个串比较比较多是对应位置上ASCII码值的大小。如果比较到最后,一个串已经结束,则按照串长度长度为大。

请添加图片描述
请添加图片描述

比较著名的KPM算法就是字符串模式匹配算法

4. 数组

数组已经很熟悉了,就不再赘述。这里需要注意的概念是数组存储是的两种模式:

  • 行优先:一行一行的存储,先存储完第一行,再存储第二行
  • 列优先:一列一列的存储,先存储完第一列,然后再存储第二列

上述存储方式是针对二维数组

在这里插入图片描述

例题答案:
a + ( 2 ∗ 5 + 3 ) ∗ 2 a+(2*5+3)*2 a+(25+3)2

5. 稀疏矩阵

稀疏矩阵中大部分只有上三角或者下三角的位置中存储元素,其余位置均为0,因为为了优化存储空间,可以使用一维数组进行存储。

对于稀疏矩阵中元素在一维数组中的对应关系的公式没有必要记,考试的时候直接带入计算即可。

请添加图片描述

请添加图片描述

解题思路:首先拿A(0,0)来试一试,A(0,0)应该存储在M[0]中,因此把i=0,j=0,带入到下面中,可以得到的是A,C正确

然后拿A(1,1)来试一试,A(1,1)应该存储在M[3]中,因此把i=1,j=1,带入到下面中,可以得到的是A正确

6. 广义表

广义表是线性表的一个推广,广义表中最重要的两个概念是

  • 广义表的长度:最外层包含的元素个数
  • 广义表的深度:括号嵌套的深度
  • 广义表规定,空表{}的长度为0
  • 若广义表中只有一个原子,则深度为0。其实,每次递归返回的值都是当前所在的子表的深度,原子默认深度为 0,空表默认深度为 1。
  • 广义表中,第一个元素成为表头,其余元素均是表尾。

在这里插入图片描述

相关链接

  • https://blog.csdn.net/Aaron_Kings/article/details/102999255
  • https://blog.csdn.net/qq_37717494/article/details/105074513

相关文章:

【DAY05 软考中级备考笔记】线性表,栈和队列,串数组矩阵和广义表

线性表,栈和队列,串数组矩阵和广义表 2月28日 – 天气:阴转晴 时隔好几天没有学习了,今天补上。明天发工资,开心😄 1. 线性表 1.1 线性表的结构 首先线性表的结构分为物理结构和逻辑结构 物理结构按照实…...

AutoGen Studio助力打造私人GPTs

微软最近在开源项目里的确挺能整活儿啊! 这次我介绍的是AutoGen Studio,我认为这个项目把AutoGen可用性又拔高了一个层次的项目 项目给自己的定义是交互式的多Agent workflow 项目地址:autogen/samples/apps/autogen-studio at main microsoft/autogen (github.com) 首先我…...

SpringBoot 自定义映射规则resultMap association一对一

介绍 例:学生表,班级表,希望在查询学生的时候一起返回该学生的班级,而一个实体类封装的是一个表,如需要多表查询就需要自定义映射。 表结构 班级表 学生表 SQL语句 SELECT a.id,a.name,a.classes,b.id classes…...

华东地区汽车相关夹具配套企业分布图,你了解多少?

1、华东地区 上海汽车整车厂众多,大多以设计研发为主,注重技术和造型,这与他们的整体风格息息相关。 作为与国际接轨的特大城市,中国的经济、交通、科技、工业、金融、贸易、会展和航运中心,聚集了大量的设计和研发人…...

SpringBoot - 后端数据返回前端各个数据类型全局格式化

全局配置 import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; import com.fasterxml.jackson.databind.module.SimpleModule; import com.fasterxml.j…...

实验室记账项目(java+Mysql+jdbc)

前言: 因为自己学习能力有限和特殊情况必须要找一个项目来做,但是上网搜的那些项目有两种(一种是技术太多,自己能力不够;一种是技术太少,项目太简单)导致都不适合本人,本人现有技术只…...

spring boot 整合 minio存储 【使用篇】

zi导入依赖 <!--minio--><dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>8.0.3</version></dependency> yml配置&#xff08;默认配置&#xff09; spring:# 配置文件上传大小限制s…...

【Redis】深入理解 Redis 常用数据类型源码及底层实现(5.详解List数据结构)

本文是深入理解 Redis 常用数据类型源码及底层实现系列的第5篇&#xff5e;前4篇可移步(&#xffe3;∇&#xffe3;)/ 【Redis】深入理解 Redis 常用数据类型源码及底层实现&#xff08;1.结构与源码概述&#xff09;-CSDN博客 【Redis】深入理解 Redis 常用数据类型源码及底…...

Vue+Flask电商后台管理系统

在这个项目中&#xff0c;我们将结合Vue.js前端框架和python后端框架Flask&#xff0c;打造一个功能强大、易于使用的电商后台管理系统 项目演示视频&#xff1a; VueFlask项目 目录 前端环境&#xff08;Vue.js&#xff09;&#xff1a; 后端环境&#xff08;python-Flask&…...

SpringBoot保姆级入门文档

目录 1、SpringBoot的优点 2、和Spring、SpringMVC的对比 3、Xml 和 JavaConfig 1、SpringBoot的优点 2、和Spring、SpringMVC的对比 3、Xml 和 JavaConfig Spring 使用 Xml 作为容器配置文件&#xff0c;在 3.0 以后加入了 JavaConfig&#xff0c;使用 java 类做配置文件使…...

Springboot同一台服务器部署多个项目,导致redis混淆,如何根据不同项目区分

在Spring Boot应用中,如果在同一台服务器上部署了多个项目,并且每个项目都使用Redis作为缓存或存储,为了避免Redis数据混淆,你需要确保各个项目在访问Redis时使用不同的数据库索引号、键前缀或者连接配置。 以下是一些区分不同项目Redis数据的方法: 使用不同数据库索引:…...

redis启动错误

错误&#xff1a; Creating Server TCP listening socket 127.0.0.1:6379: bind: No error redis-server.exe redis.windows.conf redis-cli.exe shutdown auth "yourpassword"...

单片机烧录方式 -- IAP、ISP和ICP

目录 背景 1 什么是ICP 2 什么是ISP 3 什么是IAP 4 总结 背景 对于51单片机&#xff0c;我们使用STC-ISP上位机软件通过串口进行程序的烧写&#xff1b;对于STM32系列单片机&#xff0c;我们既可以通过串口烧写程序&#xff0c;也能通过JLink或是STLink进行程序的烧写&am…...

数据结构(C语言版)01

//顺序存储 int main(){ int ans[5]{1,1,1,1,3};//定义并初始化 printf("%d",ans[4]); return 0; } //链式存储 Typdef struct Lnode{ElemType data;struct Lnode *next; }Londe,*LinKlist;Londe *L; L(LinkList)malloc(sizeof(Lnode)); A->nextB;B->nextC;…...

Node.js-文件读取输入

Node.js-文件读取输入 fs模块&#xff08;操作文件的模块&#xff09; 读取 fs.readFile(path[, options], callback)&#xff1b;[]里面 是可选参数&#xff0c;表示以什么样的编码 格式读取path是路径callback表示读取完成后的回调函数 例子 fs.readFile (‘./files/11.txt…...

时隔一年的测评:gpt3.5发展到什么程度了?

名人说&#xff1a;一花独放不是春&#xff0c;百花齐放花满园。——《增广贤文》 作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 一、简要介绍1、chatgpt是什么&#xff1f;2、主要特点3、工作原理4、应用限制5、使…...

[RCTF2015]EasySQL1 题目分析与详解

一、题目介绍&#xff1a; 1、题目来源&#xff1a; BUUCTF网址 2、题目介绍&#xff1a; 拿到flag。 二、解题思路&#xff1a; 我们发现题目首页有登录和注册账号两个选项&#xff0c;我们首先尝试注册账号&#xff0c;尝试注册username为admin的账号&#xff0c;输入密码…...

开源的 Python 数据分析库Pandas 简介

阅读本文之前请参阅-----如何系统的自学python Pandas 是一个开源的 Python 数据分析库&#xff0c;它提供了高性能、易用的数据结构和数据分析工具。Pandas 特别适合处理表格数据&#xff0c;例如时间序列数据、异构数据等。以下是对 Pandas 的简明扼要的介绍&#xff0c;包括…...

LeetCode 2125.银行中的激光束数量

银行内部的防盗安全装置已经激活。给你一个下标从 0 开始的二进制字符串数组 bank &#xff0c;表示银行的平面图&#xff0c;这是一个大小为 m x n 的二维矩阵。 bank[i] 表示第 i 行的设备分布&#xff0c;由若干 ‘0’ 和若干 ‘1’ 组成。‘0’ 表示单元格是空的&#xff0…...

【探索AI】Sora - 探索AI视频模型的无限可能

Sora - 探索AI视频模型的无限可能 随着人工智能技术的飞速发展&#xff0c;AI视频模型已成为科技领域的新热点。而在这个浪潮中&#xff0c;OpenAI推出的首个AI视频模型Sora&#xff0c;以其卓越的性能和前瞻性的技术&#xff0c;引领着AI视频领域的创新发展。让我们将一起探讨…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象&#xff0c;只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意&#xff1a;它移动的位置必须是相连的有内容的单元格…...

Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换

目录 关键点 技术实现1 技术实现2 摘要&#xff1a; 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式&#xff08;自动驾驶、人工驾驶、远程驾驶、主动安全&#xff09;&#xff0c;并通过实时消息推送更新车…...

多模态图像修复系统:基于深度学习的图片修复实现

多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...

FFmpeg:Windows系统小白安装及其使用

一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】&#xff0c;注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录&#xff08;即exe所在文件夹&#xff09;加入系统变量…...

消息队列系统设计与实践全解析

文章目录 &#x1f680; 消息队列系统设计与实践全解析&#x1f50d; 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡&#x1f4a1; 权衡决策框架 1.3 运维复杂度评估&#x1f527; 运维成本降低策略 &#x1f3d7;️ 二、典型架构设计2.1 分布式事务最终一致…...

消防一体化安全管控平台:构建消防“一张图”和APP统一管理

在城市的某个角落&#xff0c;一场突如其来的火灾打破了平静。熊熊烈火迅速蔓延&#xff0c;滚滚浓烟弥漫开来&#xff0c;周围群众的生命财产安全受到严重威胁。就在这千钧一发之际&#xff0c;消防救援队伍迅速行动&#xff0c;而豪越科技消防一体化安全管控平台构建的消防“…...

嵌入式学习之系统编程(九)OSI模型、TCP/IP模型、UDP协议网络相关编程(6.3)

目录 一、网络编程--OSI模型 二、网络编程--TCP/IP模型 三、网络接口 四、UDP网络相关编程及主要函数 ​编辑​编辑 UDP的特征 socke函数 bind函数 recvfrom函数&#xff08;接收函数&#xff09; sendto函数&#xff08;发送函数&#xff09; 五、网络编程之 UDP 用…...

StarRocks 全面向量化执行引擎深度解析

StarRocks 全面向量化执行引擎深度解析 StarRocks 的向量化执行引擎是其高性能的核心设计&#xff0c;相比传统行式处理引擎&#xff08;如MySQL&#xff09;&#xff0c;性能可提升 5-10倍。以下是分层拆解&#xff1a; 1. 向量化 vs 传统行式处理 维度行式处理向量化处理数…...

比特币:固若金汤的数字堡垒与它的四道防线

第一道防线&#xff1a;机密信函——无法破解的哈希加密 将每一笔比特币交易比作一封在堡垒内部传递的机密信函。 解释“哈希”&#xff08;Hashing&#xff09;就是一种军事级的加密术&#xff08;SHA-256&#xff09;&#xff0c;能将信函内容&#xff08;交易细节&#xf…...