【数据结构】——栈、队列简答题模板
目录
- 一、栈
- (一)栈的基本概念
- (二)栈的应用
- (三)栈的代码实现
- (四)递归算法
- (五)栈与队列的区别
- 二、队列
- (一)队列的基本概念
- (二)队列的应用
- (三)循环队列的基本概念
一、栈
(一)栈的基本概念
1、简述栈的特性。
答
:栈是被限制存取点的线性表,只允许在一端进行插入或删除操作,栈遵循的原则是先进后出(FILO),即后进的元素先被取出来。
(二)栈的应用
1、栈有哪些应用场景?(试举例至少三种)
答
:栈有以下应用场景:
①递归及函数调用;
②表达式求值(例如,中后缀表达式、括号匹配等等);
③进制转换(例如,十进制数转为二进制数等等);
④迷宫求解;
⑤缓存机制;
⑥用栈对二叉树进行前、中、后序遍历;
⑦用栈模拟队列。
2、栈的操作原则是什么?举出两个栈的应用例子。
答
:栈的操作原则是先进后出,例如用栈对二叉树进行前、中、后序遍历以及用栈模拟队列等等。
3、简述用两个栈模拟一个队列的基本思想。
答
:首先,定义两个栈S1和S2,将所有元素依次入栈S1,然后再依次出栈并进入栈S2,再从栈S2出栈。
(三)栈的代码实现
1、写出顺序存储结构的顺序栈的结构体、栈空、栈满、进栈及出栈的关键代码。
答
:①顺序栈的结构体:
#define MaxSize 20 //可自行设置
typedef struct {int data[MaxSize]; //存放栈中元素 ,使用数组int top; //栈顶指针 ,记录栈顶元素的位置
} SqStack; //顺序栈的类型定义
②判断顺序栈是否为空栈的条件是S.top==-1。
③判断顺序栈是否为满栈的条件是S.top==MaxSize-1。
④将一个元素插入顺序栈中,即进栈,
++S.top; //top指针始终指向栈顶,新的元素进栈,所以指针先加1
S.data[S.top]=x; //将进栈元素的值传入并入栈
这两行代码也可以使用一行代码:S.data[++S.top]=x直接替换。
⑤将一个元素从顺序栈中删除,即出栈,
x=S.data[S.top]; //出栈
S.top--; //指针减1
这两行代码也可以使用一行代码:x=S.data[S.top–]直接替换。
(四)递归算法
1、递归算法包括哪两个部分?简述递归的步骤。
答
:一个递归算法必须包括终止条件和递归部分,当递归的条件不满足时,此时递归结束返回,否则继续进行递归操作。
2、简述递归算法的优缺点。
答
:递归算法的代码简洁明确,其可读性好,但是其时间复杂度和空间复杂度较大,且在调用栈时可能会产生溢出。
(五)栈与队列的区别
1、简述栈和队列的相同点和不同点。
答
:①不同点:运算规则不同,栈遵循的原则是先进后出,而队列的原则是先进先出,栈只允许在一端进行插入、删除操作,而队列只允许在一端进行插入、另一端进行删除操作。另外,两个用途不同,栈由于子程序调用和保护现场,而队列用于多道作业处理、指令寄存及其他运算等等;
②相同点:都是操作受限的线性表,逻辑结构相同,且存储表示也相同(顺序存储结构和链式存储结构)。
二、队列
(一)队列的基本概念
1、队列的“先进先出”的特性是指什么?
答
:队列遵循的原则是先进先出,其特性是指最后插入队列中的元素总是最后被删除。
(二)队列的应用
1、队列有哪些应用?
答
:队列的应用场景有以下:
(1)缓冲区(例如计算机与打印机中间的打印数据缓冲区);
(2)页面替换算法;
(3)图的广度优先搜索、树的层次遍历,都借助到了队列的基本思想。
(三)循环队列的基本概念
1、怎么解决队列“假溢出”的问题?并写出相关的代码。
答
:将存储队列的一维数组首尾相连成环,形成循环队列,其中队头指针、队尾指针加1时通过取余运算实现,从而防止队列的“假溢出”。进对针对队尾指针,即Q.rear=(Q.rear+1)%MAXSIZE,出队针对队头指针,即Q.front=(Q.front+1)%MAXSIZE。
2、什么是循环队列?给出循环队列中元素个数的计算式(设最大长度为N,队首指针FRONT,队尾指针REAR)。
答
:循环队列也就是将顺序队列中的一维数组首尾相连成环,即在逻辑上视为一个环连接起来,让队首指针和队尾指针沿着环走;循环队列中元素个数的计算式为(REAR-FRONT+N)%N。
相关文章:
【数据结构】——栈、队列简答题模板
目录 一、栈(一)栈的基本概念(二)栈的应用(三)栈的代码实现(四)递归算法(五)栈与队列的区别 二、队列(一)队列的基本概念(…...

基于若依的ruoyi-nbcio流程管理系统仿钉钉流程json转bpmn的flowable的xml格式(排它条件网关)
更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 这个章节来完成并行网关与排它条件网关的功能 1、前端 目前就修改了排它条件网关的前端条件部分…...

【华为OD题库-007】代表团坐车-Java
题目 某组织举行会议,来了多个代表团同时到达,接待处只有一辆汽车,可以同时接待多个代表团,为了提高车辆利用率,请帮接待员计算可以坐满车的接待方案,输出方案数量。 约束: 1.一个团只能上一辆车࿰…...

利用servlet实现对书籍书名、单价、数量等信息的添加,计算总价
1.题目要求 利用servlet实现对书籍书名、单价、数量等信息的添加,计算总价。 要求:输入两次表单信息,在一个成功返回的页面里面显示两次的数据。 2.Book实体类 package com.hjj.sevletgk.hw7.book;/*** author:嘉佳 Date:2023/10/8 15:16*…...

一键批量转码:将MP4视频转为MP3音频的简单方法
随着数字媒体设备的普及,视频和音频格式转换的需求也越来越常见。其中,将MP4视频批量转换为MP3音频的需求尤为普遍。无论是为了提取视频中的背景音乐,还是为了在手机或电脑上方便地收听视频音频,这个过程都变得非常重要。接下来我…...
java入门,记一次微服务间feigin请求的问题
一、前言 记录工作中遇到的开发问题,而不是写博客凑字数。 二、微服务调用 1、通过本服务调用另外一个服务,需要定义一个接口,并用FeignClient 注解进行注解 value "服务名" 要调用的服务名 服务得到路径,对应的是c…...

HarmonyOS应用开发者高级认证(88分答案)
看好选择题,每个2分多答对2个刚好88分,祝你顺利。 其它帮扶选择题。 一、判断 只要使用端云一体化的云端资源就需要支付费用(错)所有使用Component修饰的自定义组件都支持onPageShow,onBackPress和onPageHide生命周期…...

离散Hopfield神经网络分类——高校科研能力评价
大家好,我是带我去滑雪! 高校科研能力评价的重要性在于它对高等教育和科研体系的有效运作、发展和提高质量具有深远的影响。良好的科研能力评价可以帮助高校识别其在不同领域的强项和薄弱点,从而制定战略,改进教学和科研ÿ…...

Run highlighted commands using IDE
背景 有时候在 IEDE 的命令行中输入命令,会弹出如下提示,或者命令被着了背景色了,是怎么回事? 其实就是提示你可以使用 IDEA 的功能替代命令行。比如使用ctrlenter或cmdenter之后使用的就是 IDEA 里的功能 直接enter运行&#x…...

vscode文件跳转(vue项目)
在 .vue 文件中,点击组件名打开 方式1: 在 vue 组件名上,桉住ctrl 鼠标左键 // 重新打开一个tab 方式2: 在 vue 组件名上,桉住ctrl shift 鼠标左键 // 在右侧拆分,并打开一个tab .vue文件的跳转 按住 …...

嵌入式Linux系统中内存分配详解
Linux中内存管理 内存管理的主要工作就是对物理内存进行组织,然后对物理内存的分配和回收。但是Linux引入了虚拟地址的概念。 虚拟地址的作用 如果用户进程直接操作物理地址会有以下的坏处: 1、 用户进程可以直接操作内核对应的内存,破坏…...
4、FFmpeg命令行操作4
ffplay命令-高级选项1 选项 说明 -stats 打印多个回放统计信息,包括显示流持续时间,编解码器参数,流中的当前位置,以及音频/视频同步差值。默认情况下处于启用状态,要显式禁用它则需要指定-nostats。。 -fast 非标准化规范的多媒体兼容优化。 -genpts 生…...

如何通过命令查看某一文件的内容改动和提交记录
1. 查看最近10条的提交记录 一行显示 git log --oneline -102.查看某一个文件的提交记录 git log --oneline -10 文件路径3.查看某个文件的修改内容 查看某次提交的修改 内容 git show bcd9299 查看某次提交某个文件的修改内容git show bcd9299 文件路径4.对比两次提交内容的…...

更安全的ssh协议与Gui图形化界面使用
目录 前言: 一.Gui图形化界面的使用 二.ssh协议 SSH的主要作用包括: 相比其他网络协议,SSH的优势包括: 三.idea集成Git 前言: 上一篇讲解了git的命令用法以及https协议,但是这个协议放在做团队项目的…...
❤ Uniapp使用 ( 三 配置和各种使用篇)
❤ Uniapp使用 ( 三 配置和各种使用篇) 1、 uniapp引入 vant 引入方式 1、下载vant源码 方式一:从 Vant 官网首页进入 GitHub下载对应版本的压缩包,将文件解压后备用,确保下载的压缩包里有dist 文件夹 2、创建 uniapp 项目,在根目录下新建 一个文件夹wxcomponent…...
k8s 创建普通用户使用
创建一个用户只能访问"abc", “dev”, “prod” 的三个命名空间 创建用户 apiVersion: v1 kind: ServiceAccount metadata:name: abc-bbc-mmc-user或者直接创建 kubectl create user abc-bbc-mmc-user创建角色 apiVersion: rbac.authorization.k8s.io/v1 kind: R…...
【微软技术栈】C#.NET 依赖项注入
本文内容 多个构造函数发现规则使用扩展方法注册服务组框架提供的服务服务生存期服务注册方法作用域验证范围场景 .NET 支持依赖关系注入 (DI) 软件设计模式,这是一种在类及其依赖项之间实现控制反转 (IoC) 的技术。 .NET 中的依赖关系注入是框架的内置部分&#…...

评国青、优青、杰青,到底需要什么级别的文章?五篇代表作如何选?
一到年底就听同事们讨论到底申报“杰青”、“优青”还是“国青”,那么,“杰青”到底是什么呢?它和“优青”、“国青”又有什么区别呢? 杰青,全称“国家杰出青年基金获得者”,是国家自然科学基金里人才资助…...

使用双动态令牌混合器学习全局和局部动态以进行视觉识别
TransXNet: Learning Both Global and Local Dynamics with a Dual Dynamic Token Mixer for Visual Recognition 1、问题与解决2、引言3、方法3.1 双动态令牌混合器(D- Mixer)3.2 IDConv(Input-dependent Depthwise Convolution)3.3 Overlapping Spatial Reduction Attention …...

Flutter笔记 - 关于 fit 属性以及相关知识的总结
Flutter笔记 关于 fit 属性以及相关知识的总结 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/qq_28550263/article/details/13434451…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...
多模态图像修复系统:基于深度学习的图片修复实现
多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...
上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式
简介 在我的 QT/C 开发工作中,合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式:工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...

Neko虚拟浏览器远程协作方案:Docker+内网穿透技术部署实践
前言:本文将向开发者介绍一款创新性协作工具——Neko虚拟浏览器。在数字化协作场景中,跨地域的团队常需面对实时共享屏幕、协同编辑文档等需求。通过本指南,你将掌握在Ubuntu系统中使用容器化技术部署该工具的具体方案,并结合内网…...
32单片机——基本定时器
STM32F103有众多的定时器,其中包括2个基本定时器(TIM6和TIM7)、4个通用定时器(TIM2~TIM5)、2个高级控制定时器(TIM1和TIM8),这些定时器彼此完全独立,不共享任何资源 1、定…...

倒装芯片凸点成型工艺
UBM(Under Bump Metallization)与Bump(焊球)形成工艺流程。我们可以将整张流程图分为三大阶段来理解: 🔧 一、UBM(Under Bump Metallization)工艺流程(黄色区域ÿ…...

鸿蒙Navigation路由导航-基本使用介绍
1. Navigation介绍 Navigation组件是路由导航的根视图容器,一般作为Page页面的根容器使用,其内部默认包含了标题栏、内容区和工具栏,其中内容区默认首页显示导航内容(Navigation的子组件)或非首页显示(Nav…...
HTML中各种标签的作用
一、HTML文件主要标签结构及说明 1. <!DOCTYPE html> 作用:声明文档类型,告知浏览器这是 HTML5 文档。 必须:是。 2. <html lang“zh”>. </html> 作用:包裹整个网页内容,lang"z…...

二维数组 行列混淆区分 js
二维数组定义 行 row:是“横着的一整行” 列 column:是“竖着的一整列” 在 JavaScript 里访问二维数组 grid[i][j] 表示 第i行第j列的元素 let grid [[1, 2, 3], // 第0行[4, 5, 6], // 第1行[7, 8, 9] // 第2行 ];// grid[i][j] 表示 第i行第j列的…...