嵌入式软件开发工程师工作内容/seo 优化案例
1 栈
1.1 栈的定义
后进先出【LIFO】
1.2 基本操作
元素进栈出栈 只能在栈顶进行!!!
经常考的题:
穿插的进行进栈和出栈 可能有多个选项
1.3 顺序栈
1.3.1 初始化
下标是从0开始的
1.3.2 进栈
更简单的写法:
1.3.3 出栈
1.3.4 读栈顶元素
有时候栈顶的top指针是指向下一个个的
1.4 共享栈
回收资源这个事情我不用管,系统会自己回收!
1.5 链栈
只能在链头进行操作【带不带头结点 都要会写!!!】
一定要自己写一遍!!!
2 队列
2.1 定义
排队在食堂打饭
先进入的元素先出【FIFO】
2.2 基本操作
2.3 顺序队列
2.3.1 初始化
2.3.2 入队
这里要注意队列满的时候的条件,当rear等于10的时候不能说明已经满了:因为前面的元素可能已经出队了那么我们应该把rear指针指向前面【这时候就用到取模运算!!!】
加入取模运算之后,队列逻辑上就变成了一个循环队列的感觉:
2.4 循环队列
队列已满的条件:必须要牺牲一个存储单元,不能把那个也填上。因为在初始化的时候,front=rear时,判断队列是空的;因此为了加以区分,只能这样了!
2.4.1 入队
这样就可以填上了队列是否已满
2.4.2 出队
2.4.3 判满和判空
【1】牺牲一个存储单元用于判满
有了前后指针可以计算出队列中的元素个数!!!:
就是:(rear+Maxsize-front)%Maxsize[记住!!]
【2】定义size 用于记录对列中有几个元素
【3】设置tag 0表示删除 1表示插入
只有删除会导致队列为空 只有插入会导致队列为满!!!
因此可通过front=rear和tag的值进行综合判断 对列是满还是空!
2.4.4 其他的题
【1】队尾指针指向队尾元素
这样的话可以在初始化的时候有所改动!!!
判空:
判满:
牺牲一个存储单元、增加一个辅助变量!
2.5 队列的链式实现
带头结点和不带头节点
2.5.1 初始化
2.5.2 入队【在表尾进行】
不带头结点的时候要对第一个元素进行特殊处理:
2.5.3 出队
对最后一个节点出队的时候,要修改的不止头指针还有尾指针哦
当最后一个结点出队的时候操作不太一样!
2.5.4 队列满的条件
一般不会满,但是在顺序存储的时候却很重要
2.5.5 总结
如果总是需要使用length的话,就把length放在一开始初始化的时候!
2.6 双端队列
双端队列:只允许从两端插入和删除,和传统的队列不太一样!
由此可以得到两个变种:输入受限和输出受限队列
【1】考点 :判断输出序列的合法性!!!
(1)栈【卡特兰数】
(2)输入受限的双端序列
在栈里合法的,在这里也一定合法!
(3)输出受限的双端序列
【2】总结
3 栈和队列的应用
3.1 栈在括号匹配中的应用
IDE可视化编译器,括号必须是成双成对的
注意:最后出现的左括号最先被匹配【LIFO】,每出现一个右括号就要消耗一个左括号【出栈】!
就是说可以把从左到右进行扫描,遇到左括号就压入栈中 遇到右括号就出栈最后一个入栈的元素和其匹配,匹配成功就继续扫描,直到扫描结束时栈为空 说明括号匹配成功!
尝试不使用基本操作,只是使用指针判断是否匹配!
3.2 栈在表达式求值中的应用
后缀表达式在应用中会更加的广泛,也叫做逆波兰表达式1
注意表达式转换时有严格的左右关系!!!!不能乱哦!!!
3.2.1 中缀表达式转后缀表达式
【1】手算
可以看出中缀表达式中运算的顺序就是后缀表达式中 运算符出现的顺序,但是一个中缀表达式可能有多个后缀表达式,这样不妨方便机算,因此要有一个“左优先原则”如下:
左优先:只要左边的可以先计算,就有限算左边的!!!
【2】机算
这素考试的重点!!!!
3.2.2 后缀表达式的运算
3.2.3 后缀表达式运算【栈】
特点最后出现的操作数最先被运算:意思就是当扫描到运算符的时候 与运算符挨的最近的两个元素先运算!这样就满足栈的定义【LIFO】【后进先出】
具体的操作过程:
!!!中缀转后缀和后缀的运算两个算法结合
都是从左往右进行的!所以就有了下面的:
用笔写一下!!!!!!
3.2.4 中缀转前缀
右优先:会让一样!很爽的结果!
3.2.5 前缀表达式代码实现【栈】
从右向左扫描! 实现的时候注意先出来的是左操作数!!!
3.2.6 总结
算法必须有确定性!
所以给前缀表达式和后缀表达式加了很多限制!
3.3 栈在递归中的应用
3.3.1 函数调用的过程
所以在func1中修改ab的值main函数中的ab值不会改变,因为改的就不是一个东西!
3.3.2 栈在递归中的应用
递归层数越多 身高约高!
红色箭头是调用的顺序,根据图可以看出有些值会被计算两次,这就是递归算法不太高效的原因之一
3.4 队列的应用
树的层次遍历:树结构的结点一层一层的遍历
【过程:加入一个结点,然后把他的左右子结点加在队尾,当一个结点的左右结点都在的话他就可以出队】
图的广度优先遍历:
思想和树差不多
队列在操作系统中的应用:
4 数组和特殊矩阵
4.1 数组
一维数组:
元素种类相同那么存储的大小也是相同的!
二维数组:
行有限和列优先可以把本来不是线性的结构拉成线性的!计算机存储的空间都是线性的:当给出行号和列好计算机就可以计算出这个元素在计算机中的存储地址,也就是说二维数组也具有随机存储的特性!
4.2 矩阵的存储
4.2.1 普通矩阵
4.2.2 对称矩阵
最喜欢考查的点:在已知行号和列号时怎么创造映射函数得到数组的下标
比如:行优先时:
当i>j时:
当i<j时:
4.2.3 三角矩阵
重点存储不是常量的区域:和对称是一样的
4.2.4 三对角矩阵(带状矩阵)
一共有3n-2个元素!
4.2.4 稀疏矩阵
创建struct 然后按照依次扫描的方法得到矩阵上的值,但是失去了随机存储的功能,因此有下面的十字链表法
总结:
坑可能在下标是不是从零开始的!
相关文章:

数据结构(3)栈、队列、数组
1 栈 1.1 栈的定义 后进先出【LIFO】 1.2 基本操作 元素进栈出栈 只能在栈顶进行!!! 经常考的题: 穿插的进行进栈和出栈 可能有多个选项 1.3 顺序栈 1.3.1 初始化 下标是从0开始的 1.3.2 进栈 更简单的写法: 1.3…...

数据库(入门)
文章目录 一、数据库(DB) 二、数据库管理系统(DBMS) 三、SQL(结构化查询语言) 四、三者的关系 五、端口号(port number) 一、数据库(DB) 定义:按照一定格式存储数据的一些文件的组合。 简单来…...

ChatTTS+Python编程搞定语音报时小程序
文字转语音神器Python编程搞定语音报时小程序 今天一个好哥们发了一个文字转语音的AI神器的短视频。这个神器的网站是[ChatTTS - Text-to-Speech for Conversational Scenarios][https://chattts.com/],如下图所示: 这个开源项目可以从github.com上下载…...

【Mac】Alfred 5 for Mac(苹果效率提升工具)v5.5软件介绍及安装教程
软件介绍 Alfred 是适用于 Mac 操作系统的流行生产力应用程序。它旨在帮助用户在 Mac 电脑上更高效地启动应用程序、搜索文件和文件夹以及执行各种任务。借助 Alfred,用户可以创建自定义键盘快捷方式、设置自定义工作流程并使用热键访问功能。 Alfred for Mac 的一…...

PDF文件处理不再复杂:9个Python库让一切变得简单
大家好,这里是程序员晚枫,2年前发布了一个开源项目:python-office,目前在GitHub上有800⭐,最近在开发新功能时感觉Python知识有点不够用了。 所以打算从2方面补充自己的知识:研究优秀的第三方库和学习Pyth…...

安防视频融合汇聚平台EasyCVR如何实现视频画面自定义标签?
安防视频融合汇聚平台EasyCVR兼容性强,可支持Windows系统、Linux系统以及国产化操作系统等,平台既具备传统安防视频监控的能力,也具备接入AI智能分析的能力,可拓展性强、视频能力灵活,能对外分发RTMP、RTSP、HTTP-FLV、…...

Liunx音频
一. echo -e "\a" echo 通过向控制台喇叭设备发送字符来发声: echo -e "\a"(这里的 -e 选项允许解释反斜杠转义的字符,而 \a 是一个响铃(bell)字符) 二. beep 下载对应的包 yum -y install beep 发声命令 be…...

2024前端面试准备3-JS异步-进阶
1.请描述Event loop(事件循环)的机制。 JS是单线程的,异步需要基于毁掉来实现,event loop 就是异步回调的实现原理。 同步代码,一行一行放在Call Stack执行,遇到异步任务,标记一下让其他线程去处…...

lm studio 0.2.24国内下载模型
1.修改C:\Users\Admin\AppData\Local\LM-Studio\app-0.2.24\resources\app\.webpack\main中的3个js文件: index.js llmworker.js worker.js 中替换huggingface.co为hf-mirror.com。这样就能实现搜索模型文件 2.点击模型,选择下载,出现下载…...

卷积池化尺寸计算公式
卷积层[Conv]: 卷积CNN是我们最常使用的,但是有时候需要观察他的输出前后的差异,这里描述下计算方式,具体如下: 图片大小:WxHxD W:宽 H:高 D:通道(RGB) 例:320x320x3 卷积核&…...

前端框架原理自测题:根据 JSX / Vue 模板写出 render 函数 / VNode
JSX <div className"container"><p onClick{onClick} data-name"p1">hello <b>{name}</b></p><img src{imgSrc}/><MyComponent title{title}></MyComponent> </div>Vue 模板 <div class"co…...

RabbitMQ启动报错:Error during startup: {error, {schema_integrity_check_failed,
报错信息如下: Error during startup: {error,{schema_integrity_check_failed,[{table_attributes_mismatch,rabbit_user,[username,password_hash,tags,hashing_algorithm,limits],[username,password_hash,tags,hashing_algorithm]},{table_attributes_mismatch…...

操作系统入门系列-MIT6.828(操作系统工程)学习笔记(三)---- xv6初探与实验一(Lab: Xv6 and Unix utilities)
系列文章目录 操作系统入门系列-MIT6.S081(操作系统)学习笔记(一)---- 操作系统介绍与接口示例 操作系统入门系列-MIT6.828(操作系统工程)学习笔记(二)----课程实验环境搭建&#x…...

Java核心: 为图片生成水印
今天干了一件特别不务正业的事,做了一个小程序用来给图片添加水印。事情的起因是需要将自己的身份证照片分享给别人,手边并没有一个趁手的工具来生成图片水印。很多APP提供了水印的功能,但会把我的图片上传到他们的服务器,身份证太…...

Spark MLlib 机器学习详解
目录 🍉引言 🍉Spark MLlib 简介 🍈 主要特点 🍈常见应用场景 🍉安装与配置 🍉数据处理与准备 🍈加载数据 🍈数据预处理 🍉分类模型 🍈逻辑回归 &a…...

MySQL报ERROR 2002 (HY000)解决
今天在连接客户服务器时MySQL的时候报: ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql/mysql.sock’ (2) [rootXXX ~]# mysql -uroot -p Enter password: ERROR 2002 (HY000): Can’t connect to local MySQL server through socket…...

【校招】【社招】字节跳动UG营销算法工程师招聘
【校招】【社招】字节跳动UG营销算法工程师招聘 需要营销、广告、搜索、推荐等领域的人才加入 岗位简介 字节跳动增长智能-激励中台团队负责公司国内字节所有主要App(包含但不仅限于抖音/抖音极速版/抖音火山版/今日头条/头条极速版/番茄小说/番茄畅听/西瓜视频&…...

Go实战 | 使用Go-Fiber采用分层架构搭建一个简单的Web服务
前言 📢博客主页:程序源⠀-CSDN博客 📢欢迎点赞👍收藏⭐留言📝如有错误敬请指正! 一、环境准备、示例介绍 Go语言安装,GoLand编辑器 这个示例实现了一个简单的待办事项(todo…...

Web自动化测试框架+PO模式分层实战(超细整理)
前言 PO模式 在UI级的自动化测试中,对象设计模式表示测试正在交互的web应用,程序用户界面中的一个区域,这个是减少了代码的重复,也就是说,如果用户界面发生了改变,只需要在一个地方修改程序就可以了。 优…...

光猫、路由器的路由模式、桥接模式、拨号上网
下面提到的路由器都是家用路由器 一、联网条件 1.每台电脑、路由器、光猫想要上网,都必须有ip地址。 2.电脑获取ip 可以设置静态ip 或 向DHCP服务器(集成在路由器上) 请求ip 电话线上网时期,猫只负责模拟信号和数字信号的转换,电脑需要使…...

iOS--工厂设计模式
iOS--工厂设计模式 设计模式的概念和意义类族模式UIButton作为类族模式的例子总结 三种工厂设计模式简单工厂模式(Simple Factory Pattern):代码实例 工厂方法模式(Factory Method Pattern):代码实例 抽象工…...

[Python]用Qt6和Pillow实现截图小工具
本文章主要讲述的内容是,使用python语言借助PyQt6和Pillow库进行简单截图工具的开发,含义一个简单的范围裁剪和软件界面。 主要解决的问题是,在高DPI显示屏下,坐标点的偏差导致QWidget显示图片不全、剪裁范围偏差问题。 适合有一点…...

Podman和Docker的区别
Podman 和 Docker 都是用于容器化的工具,但它们在架构、安全性、容器编排以及一些设计理念上有显著的区别: 架构设计: Docker 使用客户端-服务器(C/S)架构,包含一个名为 dockerd 的守护进程,该进程以 root …...

Go微服务: 分布式Cap定理和Base理论
分布式中的Cap定理 CAP理论 C: 一致性,是站在分布式的角度,要么读取到数据,要么读取失败,比如数据库主从,同步时的时候加锁,同步完成才能读到同步的数据,同步完成,才返回数据给程序&…...

Mysql学习(四)——SQL通用语法之DQL
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 DQLDQL-语法基本查询条件查询聚合函数分组查询排序查询分页查询 DQL DQL数据查询语言,用来查询数据库中表的记录。 DQL-语法 select 字段列表 from 表…...

【ARFoundation自学05】人脸追踪(AR Face manager)实现
1. 修改摄像机朝向渲染方式-选中user 这个方式就会调用前置摄像头 2 创建 AR Session、XR Origin,然后在XR Origin上面添加组件 注意:XR Origin 老版本仍然叫 AR Session Origin 接下来在XR Origin上面添加AR Face Manager组件,如下图&am…...

Vulnhub-DC-2
靶机IP:192.168.20.135 网络有问题的可以看下搭建Vulnhub靶机网络问题(获取不到IP) kaliIP:192.168.20.128 扫描靶机端口及服务版本 发现开放了80和7744端口 并且是wordpress建站 dirsearch扫描目录 访问前端界面,发现存在重定向 在hosts文件中增加192.168.2…...

VNC server ubuntu20 配置
介绍 最近想使用实验室的4卡服务器跑一些深度学习实验,因为跑的是三维建图实验,需要配上可视化界面,本来自带的IPMI可以可视化,但分辨率固定在640*480,看起来很别扭,就捣鼓服务器远程可视化访问了两天&…...

c++--priority_queue和仿函数
目录 1.priority_queue 实现: 2.仿函数 priority_queue仿函数 实现代码 1.priority_queue 优先队列是一种容器适配器,根据严格的弱排序标准,它的第一个元素总是它所包含的元素中最大的,其实就是个堆,默认是大根堆。…...

Harmony os Next——关系型数据库relationalStore.RdbStore的使用
Harmony os Next——关系型数据库relationalStore.RdbStore的使用 描述数据库的使用建表定义表信息创建数据库表 创建数据库操作对象增更新查询删数据库的初始化 描述 本文通过存储一个简单的用户信息到数据库中为例,进行阐述relationalStore.RdbStore数据库的CRUD…...