(41)5.6-5.7数据结构(栈和队列的应用)

devtools/2024/9/20 3:51:34/ 标签: 数据结构

1.栈在括号匹配中的应用

#define _CRT_SECURE_NO_WARNINGS
#define MaxSize 10
typedef struct
{
    char data[MaxSize];//静态数组存放栈中元素
    int top;  //栈顶指针
}SqStack;
//初始化栈
void InitStack(SqStack& S);
//判断栈是否为空
bool StackEmpty(SqStack S);
//新元素入栈
bool Push(SqStack& S, char x);
//栈顶元素出栈,用x返回
bool Pop(SqStack& S, char& x);

bool brackCheck(char str[], int length)
{
    SqStack S;
    InitStack(S);//初始化一个栈
}
bool brackCheck(char str[], int lenght)
{
    SqStack S;
    InitStack(S);//初始化一个栈
    for (int i = 0; i < lenght; i++)
    {
        if (str[i] == '(' || str[i] == '[' || str[i] == '{')
        {
            Push(S, str[i]);
        }
        else
        {
            if (StackEmpty(S))
                return false;
            char topElem;
            Pop(S, topElem);//栈顶元素出栈
            if (str[i] == ')' && topElem != '(')
                return false;
            if (str[i] == ']' && topElem != '[')
                return false;
            if (str[i] == '}' && topElem != '{')
                return false;
        }
    }
    return StackEmpty(S);//检查全部括号后,栈空说明匹配成功
}

2.栈在表达式求值的应用

//表达式的组成:操作数,运算符,界限符
//中转前(右优先)
//中转后(左优先)  //可保证运算顺序唯一

2.1中级转后缀表达式

小结总结

3.栈在递归中的应用

//计算整数n!

#include<stdio.h>
int factorial(int n)
{
    if (n == 0 || n == 1)
        return 1;
    else
        return n * factorial(n - 1);
}
int main()
{
    int x = factorial(10);
    printf("奥里给");

}
//递归调用时;函数调用时函数栈可称为“递归工作栈”
//每进入一层递归,就将递归调用所需的信息压入栈中;
//每退出一层递归,就从栈顶弹出相应信息;
//缺点:太多层递归可能会导致溢出

//2.斐波那契数

int F(int n)
{
    if (n == 0)               
        return 0;          //边界条件
    else if (n == 1)
        return 1;          //边界条件
    else
        return F(n - 1) + F(n - 2);//递归表达式
}

//优点:代码简单容易理解
//缺点:效率低下

3.函数调用背后过程

 小结

4.队列在操作系统中的应用


http://www.ppmy.cn/devtools/37981.html

相关文章

MYSQL数据库中数据的增删改查

环境搭建 1.创建数据库 CREATE DATABASE IF NOT EXISTS cass DEFAULT CHARSET utf8; 2.创建数据表 CREATE TABLE IF NOT EXISTS cass.cassTables( ID INT UNSIGNED AUTO_INCREMENT, name VARCHAR(10) NOT NULL, sex CHAR(1), age TINYINT UNSIGNE…

【XR806开发板试用】阻塞式串口发送与接收教程

本文基于wsl2搭建的ubuntu18.04 vscode编辑器 很奇怪啊&#xff0c;找了半天居然没人发串口的教程&#xff0c;于是只能自己试一试了&#xff0c;在此发一个阻塞式的串口发送与接收的教程。并且&#xff0c;感谢.ACE彭洪权大佬在我配置环境遇到几十个报错的时候帮我远程搭建环…

使用socket+Python实现ping

import os import socket import struct import select import time# 计算校验和&#xff0c;用于确保数据的完整性 def checksum(source_string):sum 0count 0max_count len(source_string)# 处理成对的字节while count < max_count - 1:val source_string[count 1] *…

使用wxPython和pandas模块生成Excel文件

介绍&#xff1a; 在Python编程中&#xff0c;有时我们需要根据特定的数据生成Excel文件。本文将介绍如何使用wxPython和pandas模块来实现这个目标。我们将创建一个简单的GUI应用程序&#xff0c;允许用户选择输出文件夹和输入的Excel文件&#xff0c;并根据Excel文件中每个单…

【管理咨询宝藏93】大型制造集团数字化转型设计方案

【管理咨询宝藏93】大型制造集团数字化转型设计方案 【格式】PDF版本 【关键词】国际咨询公司、制造型企业转型、数字化转型 【核心观点】 - 235页大型制造型集团数字化转型方案设计&#xff01;细节非常详尽&#xff0c;图表丰富&#xff01; - 系统架构必须采用成熟、具有国…

静态分析-RIPS-源码解析记录-02

这部分主要分析scanner.php的逻辑&#xff0c;在token流重构完成后&#xff0c;此时ini_get是否包含auto_prepend_file或者auto_append_file 取出的文件路径将和tokens数组结合&#xff0c;每一个文件都为一个包含require文件名的token数组 接着回到main.php中&#xff0c;此时…

SpringBoot框架如何接入RocketMQ?

目录 一、SpringBoot框架介绍 二、RocketMQ介绍 三、RocketMQ的应用场景 四、SpringBoot框架如何接入RocketMQ 一、SpringBoot框架介绍 Spring Boot是一个开源的Java框架,它基于Spring框架,旨在简化Java应用程序的开发。Spring Boot通过自动化配置和约定优于配置的原则,大…

掌握TypeScript的非空断言(!)和可选链(?):开发效率翻倍!

引言 标题&#xff1a;掌握TypeScript的非空断言和可选链&#xff1a;开发效率翻倍&#xff01;简短介绍&#xff1a;在TypeScript中&#xff0c;?和!操作符是提高代码安全性和开发效率的强大工具。本文将为你揭示它们的使用方式和最佳实践。 背景知识 易于理解的解释&…

数据库权限管理

1.查看系统级权限&#xff08;global level) Select * from mysql.user\G; 2.查看数据库中所有表的权限 Select * from mysql.db\G 3.远程连接数据库 第一步在有数据库服务上的主机上&#xff1a;授权 grant all on *.* to root192.168.40.83 identified by Zxy20234; 第…

Atlassian Jira 信息泄露漏洞(CVE-2019-3403) 排查思路

Atlassian Jira&#xff1a; 企业广泛使用的项目与事务跟踪工具&#xff0c;被广泛应用于缺陷跟踪、客户服务、需求收集、流程审批、任务跟踪、项目跟踪和敏捷管理等工作领域。 简述&#xff1a; 近日发现多个内网IP触发的Atlassian Jira 信息泄露漏洞的告警。 告警的检测规…

Octave行列式矩阵运算

Octave 行列式矩阵运算 Octave 计算行列式指令一步步计算行列式 Octave 矩阵加法Octave 矩阵乘法Octave 矩阵转置Octave 矩阵求秩Octave 矩阵求逆Octave 矩阵化为最简形式 仅供本人查阅 Octave 是一个开源的数值计算软件&#xff0c;主要用于数学计算、算法开发和数据可视化。它…

实用的Chrome命令

常用命令&#xff1a; 如下为常用的chrome命令&#xff0c;欢迎尝试体验。 1. chrome://downloads 查看下载内容 2. chrome://extensions 查看扩展 3. chrome://plugins 显示已安装插件 4. chrome://bookmarks 书签管理器 5. chrome://history 历史直接访问 6. chrome://res…

软件系统安全设计规范(word原件)

1.1安全建设原则 1.2 安全管理体系 1.3 安全管理规范 1.4 数据安全保障措施 1.4.1 数据库安全保障 1.4.2 操作系统安全保障 1.4.3 病毒防治 1.5安全保障措施 1.5.1实名认证保障 1.5.2 接口安全保障 1.5.3 加密传输保障 1.5.4终端安全保障 软件资料清单列表部分文档…

Window安装OpenSSH客户端及服务

文章目录 引言I 给windows安装一个ssh服务1.1 下载对应的OpenSSH1.2 安装sshd服务1.3 开放22端口1.4 配置sshd服务自动启动1.5 验证ssh是否可用II 服务部署III 公钥登录 Windows OpenSSH Server3.1 生成公钥-私钥对,把公钥复制到目标机器的3.2 授予对AuthorizedKeysFile权限3.…

详细讲解lua中string.gsub的使用

string.gsub 是 Lua 标准库中的一个函数&#xff0c;用于全局替换字符串中的某些部分。string.gsub 是 Lua 中非常实用的一个函数&#xff0c;它可以用来进行字符串的处理和替换操作。 它的基本语法如下&#xff1a; string.gsub(s, pattern, replacement [, n])s 是要处理的…

Spring Cloud 整合Sentinel

1、引入依赖 版本说明 alibaba/spring-cloud-alibaba Wiki GitHub 父pom <spring.cloud.version>Hoxton.SR12</spring.cloud.version> <spring.cloud.alibaba.version>2.2.10-RC1</spring.cloud.alibaba.version>Sentinel应用直接引用starter <…

世界上最好用的在线看板工具 Trello 已支持 AI 啦!

对 Trello 免费版用户的提醒 从5月20日开始&#xff0c;免费版 Trello 工作区仅支持 10 个协作者&#xff0c;超过此限制将仅支持查看&#xff0c;无法编辑。解决这一问题的方法是减少协作者数量或升级到标准版或高级版。 Atlassian 去年在其云平台中引入了人工智能工具 Atlas…

15.计算机网络

1.物理层的互联设备 中继器 和 集线器 2.集线器可以看做特殊的多路中继器 集线器 不可以做到自动寻址的功能 3.数据链路层 网桥 和 交换机 4.交换机是多端口网桥 5.网络层 路由器 6.应用层 网关 7.广播域 网络层 可以形成多个广播域 冲突域 网络层数据链路层 可以形成多个冲突域…

0060__设计模式

1. 简单工厂模式( Simple Factory Pattern ) — Graphic Design Patterns 工厂模式 | 菜鸟教程 【设计模式——学习笔记】23种设计模式——建造者模式Builder&#xff08;原理讲解应用场景介绍案例介绍Java代码实现&#xff09;-CSDN博客

js之永久定时器

在JavaScript编程中&#xff0c;定时器是一种常见的工具&#xff0c;用于在指定的时间间隔内重复执行特定的代码。永久性定时器是其中一种类型&#xff0c;它会在设定的时间间隔内重复执行&#xff0c;直到被明确停止。本文将介绍如何在JavaScript中创建和使用永久性定时器。 …