【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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/415752.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于Redo log Undo log的MySQL的崩溃恢复

基于Redo log & Undo log的MySQL的崩溃恢复 Redo log Undo log Redo log 重做日志,记录,修改过的数据 Undo log 回滚日志,记录修改之前的数据 两个我不做详细的介绍了,redo log就是记录哪些地方被修改了 undo log是记录修改之前我们的数据长什么样 更新流程 我们来捋一…

【双碳】Acrel-1000DP分布式光伏并网及数据采集与控制的方式

摘要: 在“双碳”、整县分布式光伏等相关政策的目标背景下,分布式新能源广泛建设,对分布式新能 源规划的科学性提出更高的要求,有源配电网调度面临大规模分布式新能源参与后的运行管理问题,增 大了电网运行管理的风险和…

索引使用规则3——SQL提示

SQL提示:当一个字段被多个索引时,系统会自动选择使用哪个索引,但是如果想自己选择使用哪个索引,需要加入一些认位的提示来达到优化操作的目的。 可以看到name这个字段被索引了两次 查看系统选择哪个索引 explain select * from t…

poi 设置允许西文在单词中间换行

说明本文是CSDN-问答模块,题主提问。问题描述:poi 设置允许西文在单词中间换行 一、问题描述 poi 设置允许西文在单词中间换行? // 创建一个新的文档XWPFDocument document = new XWPFDocument();// 创建段落XWPFParagraph firstParagraph = document.createParagraph();fir…

Leetcode : 215. 数组中的第 K 个最大元素

给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。 请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。 思路:最开始排序算法&…

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

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

打卡今天内存管理

首先我们的体系结构是这样的,根据小林coding 来写的笔记 寄存器,速度非常快, 32位的可以存4个字节,64位的可以存8个字节 多少位只是在32位以上 地址空间 分为两种地址空间 : 物理,逻辑 地址空间 地址空间…

推荐5个python可视化库

你是否曾为数据可视化而烦恼? 在浩瀚的数据海洋中,如何将复杂的数据以直观、易懂的方式展现出来,成为了每个数据分析师和开发者必须面对的挑战。 幸运的是,我们有众多强大的可视化工具可以选择。 推荐5个Python可视化库&#x…

rtthread stm32h743的使用(四)pin设备使用

我们要在rtthread studio 开发环境中建立stm32h743xih6芯片的工程。我们使用一块stm32h743及fpga的核心板完成相关实验,核心板如图: 1.首先建立rtthread工程 2.添加相关程序如下,我们在上一节的代码中添加相关代码: #include &…

分享一点PDF中获取表格的探索过程

版面分析:如何得到标题、如何的得到段落(正确的段落)、如何得到表格、如何得到图片,图和得到图片上的文字? 还有细节问题:双栏和多栏的问题、公式问题 扫描件:扫描件本质上是图片,如…

oracle with check option 学习

with check option保证了通过视图进行的修改,必须也能通过该视图看到修改后的结果; 你插入,那么插入这条记录在刷新视图后必须可以看到; 如果修改,修改完的结果也必须能通过该视图看到; scott登录了以后创…

React中使用useActive

1.引入 import { useActivate } from "react-activation";2.React Activation 在React中使用react-activation,其实就是类似于Vue中的keep-alive,实现数据的缓存; 源码: import { ReactNode, ReactNodeArray, Context, Component…

YOLOv8改进,添加GSConv+Slim Neck,有效提升目标检测效果,代码改进(超详细)

目录 摘要 主要想法 GSConv GSConv代码实现 slim-neck slim-neck代码实现 yaml文件 完整代码分享 总结 摘要 目标检测是计算机视觉中重要的下游任务。对于车载边缘计算平台来说,巨大的模型很难达到实时检测的要求。而且,由大量深度可分离卷积层构…

2024-02-28(Kafka,Oozie,Flink)

1.Kafka的数据存储形式 一个主题由多个分区组成 一个分区由多个segment段组成 一个segment段由多个文件组成(log,index(稀疏索引),timeindex(根据时间做的索引)) 2.读数据的流程 …

Laravel - API 项目适用的图片验证码

1. 安装 gregwar/captcha 图片验证码接口的流程是: 生成图片验证码 生成随机的 key,将验证码文本存入缓存。 返回随机的 key,以及验证码图片 # 不限于 laravel 普通 php 项目也可以使用额 $ composer require gregwar/captcha2. 开发接口 …

51单片机(6)-----直流电机的介绍与使用(通过独立按键控制电机的运行)

前言:感谢您的关注哦,我会持续更新编程相关知识,愿您在这里有所收获。如果有任何问题,欢迎沟通交流!期待与您在学习编程的道路上共同进步。 目录 一. 直流电机模块介绍 1.直流电机介绍 2.电机参数 二. 程序设计…

Oracle 直接路径插入(Direct-Path Insert)

直接路径插入(Direct Path Insert)是Oracle一种数据加载提速技术,可以在使用insert语句或SQL*Loader工具大批量加载数据时使用。直接路径插入处理策略与普通insert语句完全不同,Oracle会通过牺牲空间,安全性&#xff0…

防御保护:防火墙内容安全

一、IAE(Intelligent Awareness Engine)引擎 二、深度检测技术(DFI和DPI) 1.DPI – 深度包检测技术 DPI主要针对完整的数据包(数据包分片,分段需要重组),之后对数据包的内容进行识别。&#x…

2024年阿里云2核4G云服务器性能如何?价格便宜有点担心

阿里云2核4G服务器多少钱一年?2核4G服务器1个月费用多少?2核4G服务器30元3个月、85元一年,轻量应用服务器2核4G4M带宽165元一年,企业用户2核4G5M带宽199元一年。本文阿里云服务器网整理的2核4G参加活动的主机是ECS经济型e实例和u1…

第三节-docker-cs架构分析

一、组成 docker engine:docker-client、rest-api、dockerd containerd: 1、管理容器生命周期 2、拉取/推送镜像 3、存储管理 4、调用runc 5、管理网络 containerd-shim:相当于一个驱动,containerd通过containerd-shim驱使…