栈、队列——练习题

1. ✌有效的括号

代码实现:

方法一:括号匹配

  • 在任意一个位置上,左括号数量 >= 右括号数量
  • 在最后一个位置上,左括号数量 == 右括号数量

方法二:栈

bool isValid(char* s) {char stack[10000];int top = -1;while (*s) {if (*s == '(' || *s == '{' || *s == '[') {stack[++top] = *s;} else {if (top == -1) { // 栈空return false;}int top_val = stack[top]; // 获取栈顶元素if (top_val == '(' && *s != ')' || top_val == '[' && *s != ']' || top_val == '{' && *s != '}') {return false;} else {top--;}}s++;}if (top != -1) {return false;}return true;
}

2. 海贼OJ #595. 程序调用关系

代码实现:

#include <stdio.h>
#include <string.h>int main(int argc, char *argv[]) {int n;scanf("%d", &n);char S[n][110];for (int i = 0; i < n; i++) {scanf("%s", S[i]);}char s[110];scanf("%s", s);char stack[n][110]; // 模拟栈int top = -1;int flag = 1; // 标记位for (int i = 0; i < n; i++) {if (strcmp(S[i], "return") != 0) {strcpy(stack[++top], S[i]);} else if (top != -1) {top--;}if (top != -1 && strcmp(stack[top], s) == 0) {flag = 0;break;}}if (flag) {printf("NOT REFERENCED\n");} else {for (int i = 0; i <= top; i++) {printf("%s", stack[i]);int j = i + 1;if (j <= top) {printf("->");}}putchar('\n');}return 0;
}

3. 海贼OJ #838. 2020年数据结构41题

代码实现:

4. 比较含退格的字符串

代码实现:

5. 海贼OJ #263. 火车进栈

代码实现:

#include <stdio.h>
#include <stdbool.h>int a[20], vis[21] = {0};int stack[20];// 判断是否符合栈先进后出的要求
bool judge_one_result(int n) {int top = -1;int x = 1;for (int i = 0; i < n; i++) {if (top == -1 || stack[top] < a[i]) {while (x <= a[i]) {stack[++top] = x;x++;}}if (top == -1 || stack[top] != a[i]) {return false;}top--;}return true;
}int len = 0;
void f(int i, int n) { // i:当前枚举的是第i位的值   n:最大可以选取的数字   if (i == n) { // 边界if (judge_one_result(i)) {if (len >= 20) {exit(0); // 结束所有程序 exit(0):表示程序正常退出,exit(1)或exit(-1)表示程序异常退出} else {len++;for (int j = 0; j < n; j++) {printf("%d", a[j]);}putchar('\n');}}return ;}for (int k = 1; k <= n; k++) {if (vis[k]) { // 标记位思想continue;}a[i] = k;vis[k] = 1;f(i + 1, n);// 回溯vis[k] = 0;}
}int main(int argc, char *argv[]) {int n;scanf("%d", &n);f(0, n);return 0;
}

6. 验证栈序列

代码实现:

bool validateStackSequences(int *pushed, int pushedSize, int *popped, int poppedSize) {int *stack = (int*)malloc(sizeof(int) * pushedSize);int top = -1;for (int i = 0, j = 0; i < pushedSize; i++) {stack[++top] = pushed[i];while (top > -1 && stack[top] == popped[j]) {top--;j++;}}free(stack);return top == -1;
}

7. 海贼OJ #265. 括号画家

代码实现:

记录匹配的下标

#include <stdio.h>int main(int argc, char *argv[]) {char str1[10000];gets(str1);char *str = str1 - 1; // 让数组下标从1开始int match[10001] = {0};int stack[10000]; // 定义一个栈,存储数组下标int top = -1; // 栈顶指针for (int i = 1; str[i]; i++) {switch (str[i]) {case '(': case '[': case '{': stack[++top] = i; break;case ')': {if (top != -1 && str[stack[top]] == '(') {match[stack[top]] = i;match[i] = stack[top]; //delete 可以没有top--;} else {stack[++top] = i;}} break;case ']': {if (top != -1 && str[stack[top]] == '[')  {match[stack[top]] = i;match[i] = stack[top]; //delete 可以没有top--;} else {stack[++top] = i;}} break;case '}': {if (top != -1 && str[stack[top]] == '{') {match[stack[top]] = i;match[i] = stack[top]; // delete 可以没有 top--;} else { stack[++top] = i;}} break;}}int temp_ans = 0, ans = 0, i = 1;while (str[i]) {if (match[i]) {temp_ans += (match[i] - i + 1);i = match[i] + 1;} else {i += 1;temp_ans = 0;}if (temp_ans > ans) {ans = temp_ans;}}printf("%d\n", ans);return 0;
}

8. 设计循环队列

代码实现:

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构·排序

1. 排序的概念及运用 1.1 排序的概念 排序&#xff1a;排序是将一组“无序”的记录序列&#xff0c;按照某个或某些关键字的大小&#xff0c;递增或递减归零调整为“有序”的记录序列的操作 稳定性&#xff1a;假定在待排序的记录序列中&#xff0c;存在多个具有相同关键字的记…

机器学习之线性回归与逻辑回归【完整房价预测和鸢尾花分类代码解释】

目录 前言 一、什么是线性回归 二、什么是逻辑回归 三、基于Python 和 Scikit-learn 库实现线性回归 示例代码&#xff1a; 使用线性回归来预测房价: 四、基于Python 和 Scikit-learn 库实现逻辑回归 五、总结 线性回归的优缺点总结&#xff1a; 逻辑回归&#xff08;Logistic…

RabbitMQ 的高阶应用及可靠性保证

目录 一、RabbitMQ 高阶应用 1.1 消息何去何从 1.2 过期时间 1.3 死信队列 1.4 延迟队列 1.5 优先级队列 1.6 消费质量保证&#xff08;QOS&#xff09; 二、持久化 三、生产者确认 四、消息可靠性和重复消费 4.1 消息可靠性 4.2 重复消费问题 上篇文章介绍了 Rabb…

QT----给程序添加上任务栏托盘图标和退出

让我们的程序拥有任务栏托盘图标&#xff0c;实现程序后台运行&#xff0c;退出等功能 1、关闭程序保持后台 重写关闭事件,忽略点击窗口关闭 void MainWindow::closeEvent(QCloseEvent *event) {// 隐藏窗口&#xff0c;而不是真正关闭setVisible(false);// 忽略关闭事件&am…

由浅到深认识Java语言(26):阶段性练习

该文章Github地址&#xff1a;https://github.com/AntonyCheng/java-notes 在此介绍一下作者开源的SpringBoot项目初始化模板&#xff08;Github仓库地址&#xff1a;https://github.com/AntonyCheng/spring-boot-init-template & CSDN文章地址&#xff1a;https://blog.c…

后端如何返回404地址

当我们网站输入不存在的地址&#xff0c;经常会出现404的页面&#xff0c;这是如何做到的 1.添加配置 spring:mvc:view:prefix: /templates/suffix: .html 2.resources下添加templates目录&#xff0c;下面放404的网站 3.添加依赖&#xff0c;版本在主pom里面配置好了&#x…

一个开源的分布式在线教育系统

项目介绍 roncoo-education —— 一个分布式在线教育系统。目前主要功能有课程点播功能&#xff0c;支持多家视频云的接入&#xff0c;课程附件管理功能&#xff0c;支持多家存储云的接入&#xff0c;可以帮助个人或者企业快速搭建一个轻量级的在线教育平台。 系统分为后台、前…

CHAT~(持续更新)

CHAT&#xff08;持续更新&#xff09; 实现一个ChatGPT创建API设计页面布局业务操作技术架构 编码其他 实现一个ChatGPT 创建API 最简单也最需要信息的一步 继续往下做的前提 此处省略&#xff0c;想要获取接口创建方式联系 设计 页面布局 按照官网布局 业务操作 注册登…

Linux Ncurses库部分函数使用说明

目录 1. initscr&#xff08;&#xff09;函数 2. endwin&#xff08;&#xff09;函数 3. curs_set()函数 4.noecho()函数 5. keypad()函数 6. start_color()函数 7.init_pair()函数 8.getch()函数 9.move()函数 10.addch()函数 11. refresh()函数 12.inch()函数…

网络协议栈--网络层--IP协议

目录 本节重点网络层IP协议一、 基本概念二、 IP协议报头格式三、网段划分(重要)四、特殊的IP地址五、IP地址的数量限制六、私有IP地址和公网IP地址七、路由八、IP协议全部内容一览图 本节重点 1、理解网络层的作用, 深入理解IP协议的基本原理 2、对整个TCP/IP协议有系统的理解…

llvm后端

SelectionDAGBuilder是LLVM&#xff08;Low Level Virtual Machine&#xff09;编译器中的一个重要组件&#xff0c;它负责将LLVM中间表示&#xff08;Intermediate Representation&#xff0c;IR&#xff09;转换为SelectionDAG&#xff08;选择有向无环图&#xff09;的形式。…

JavaScript进阶

1. 作用域 1.1 局部作用域 1.2 全局作用域 1.3 作用域链 1.4 JS垃圾回收机制&#xff08;闭包做铺垫&#xff09; 1.4.1 什么是垃圾回收机制 1.4.2 内存的声明周期 1.4.3 垃圾回收的算法说明 1.4.3.1 引用计数法 1.4.3.2 标记清除法 1.5 闭包 <!DOCTYPE html> <html …

QTabWidget的tabbar不同方向显示 文字方向设置 图标跟随变化 实现方式 qt控件绘制原理

先来看结果图&#xff1a;&#xff08;参考博客&#xff1a;QTabWidget中tab页文本水平或垂直设置_pyqt tab_widget.settabposition(qtabwidget.west) 字体-CSDN博客&#xff09; 从图中可知&#xff0c;"普通"是qt自己的样式&#xff0c;但是很明显&#xff0c;在垂…

【linux】进程的地址空间

1.代码看现象引入 #include<stdio.h>#include<unistd.h>#include<string.h> #include<stdlib.h>int val100;int main (){ printf("i am father,pid:%d,ppid:%d,val:%d&#xff0c;&val:%p\n",getpid(),getppid(),val,&val);size_t…

Linux:点命令source

相关阅读 Linuxhttps://blog.csdn.net/weixin_45791458/category_12234591.html?spm1001.2014.3001.5482 source命令用于读取一个文件的内容并在当前Shell环境&#xff08;包括交互式Shell或是非交互式Shell&#xff09;执行里面的命令。它被称为点命令是因为命令名source也可…

IIS7/iis8/iis10安装II6兼容模块 以windows2022为例

因安全狗的提示 安全狗防护引|擎安装失败 可能原因是: IIS7及以上版本末安装1IS6兼容模块! .所以操作解决 如下. 在开始菜单中,找到服务器管理器.找到下图的IIS,右键添加角色和功能,找到web服务器的管理工具选项,iis6管理兼容性 打钩并安装. 如下图

自然拼读-组合音(上篇)

自然拼读-组合音 1、元音字母A的二声发音组合 组合音at 注意&#xff1a;“t”是气音&#xff0c;不要太重。 Eg&#xff1a;cat&#xff08;猫&#xff09; fat&#xff08;肥的&#xff09; bat&#xff08;蝙蝠&#xff09; 组合音ap 注意&#xff1a;“p”在尾巴发音…

MRC是谁?- 媒体评级委员会 Media Rating Council

在在线广告的世界里&#xff0c;有许多不同的技术和实践用于提供和衡量广告。对于广告商、出版商和营销人员来说&#xff0c;了解这些技术是如何工作的以及如何有效使用这些技术很重要。在这方面发挥关键作用的一个组织是媒体评级委员会&#xff08;MRC&#xff09;。 1. 了解…

蓝桥杯基础练习详细讲解二(具体代码、解题思路、Python)

试题 基础练习 回文数 提交此题 评测记录 资源限制 内存限制&#xff1a;512.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 问题描述 1221是一个非常特殊的数&#xff0c;它从左边读和从右边读是一样的&#x…

mysql基础3索引

存储引擎 存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式 。存储引擎是基于表的&#xff0c;而不是 基于库的&#xff0c;所以存储引擎也可被称为表类型。 1). 建表时指定存储引擎 CREATE TABLE 表名(字段1 字段1类型 [ COMMENT 字段1注释 ] ,......字段n…