栈的应用(C++,进制转化、括号匹配)

news2024/12/24 3:27:42

         十进制转化八进制,利用栈

#include<iostream>//十进制转八进制,利用栈
using namespace std;
typedef struct stack
{
	int data;
	stack* next;
}stack, * linkstack;
void Initstack(linkstack& s)
{
	s = NULL;
}
int Emptystack(linkstack s)
{
	if (s == NULL)
		return 1;
	else
		return 0;
}
void Pushstack(linkstack& s, int node)
{
	linkstack p = new stack;
	p->data = node;
	p->next = s;
	s = p;
}
int Popstack(linkstack& s, int& node)
{
	linkstack p = new stack;
	if (s == NULL) return 0;
	node = s->data;
	p = s;
	s = s->next;
	delete p;
	return 1;
}
void Conversion(int N)
{
	linkstack s;
	Initstack(s);
	while (N)
	{
		Pushstack(s, N % 8);
		N = N / 8;
	}
	while (!Emptystack(s))
	{
		int e;
		Popstack(s, e);
		cout << e;
	}
}
int main()
{
	int N;
	cin >> N;
	cout << "八进制:" << endl;
	Conversion(N);
}

  

       括号匹配 

#include<iostream>//括号匹配,利用栈
using namespace std;
typedef struct stack
{
	int data;
	stack* next;
}stack,*linkstack;
void Initstack(linkstack &s)
{
	s = NULL;
}
int Emptystack(linkstack s)
{
	if (s == NULL)
		return 1;
	else
		return 0;
}
void Pushstack(linkstack& s, char node)
{
	linkstack p=new stack;
	p->data = node;
	p->next = s;
	s = p;
}
int Popstack(linkstack& s, char &node)
{
	linkstack p = new stack;
	if (s == NULL) return 0;
	node = s->data;
	p = s;
	s = s->next;
	delete p;
	return 1;
}
int Gettop(linkstack s)
{
	if (s != NULL)
		return s->data;
}
int Matching()//返回一合法、返回零不合法
{
	linkstack s;
	Initstack(s);
	int flag = 1;
	char ch,x;
	cin >> ch;
	while (ch != '#' && flag)
	{
		switch (ch)
		{
		case '[':
		case '(':
			Pushstack(s, ch);//左括号入栈
			break;
		case ')':
			if (!Emptystack(s) && Gettop(s) == '(')
				Popstack(s, x);//栈非空且栈顶是(,匹配成功;(出栈
			else flag = 0;//栈空或栈顶不是(,匹配失败
			break;
		case ']':
			if (!Emptystack(s) && Gettop(s) == '[')
				Popstack(s, x); //栈非空且栈顶是[, 匹配成功;[出栈
			else flag = 0;//栈空或栈顶不是(,匹配失败
			break;
		}
		cin >> ch;
	}
	if (Emptystack(s) && flag) return 1;
	else return 0;
}
int main()
{
	int a=Matching();
	cout << a;
}

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华为云云耀云服务器L实例评测|基于开源库 Stable Diffusion web UI部署AI绘画应用

前言 随着云计算时代的进一步深入&#xff0c;越来越多的中小企业企业与开发者需要一款简单易用、高能高效的云计算基础设施产品来支撑自身业务运营和创新开发。基于这种需求&#xff0c;华为云焕新推出华为云云服务器实例新品。 华为云云服务器具有智能不卡顿、价优随心用、…

整合minio时出现的错误

Action:Correct the classpath of your application so that it contains compatible versions of the classes io.minio.S3Base and okhttp3.RequestBody 这个错误是我在整合minio时报的错&#xff0c;说实话遇到这个错误我还是很头大的&#xff0c;因为之前在springboot项目…

代码随想录算法训练营 动态规划part12

一、最佳买卖股票时机含冷冻期 309. 买卖股票的最佳时机含冷冻期 - 力扣&#xff08;LeetCode&#xff09; public class Solution {public int maxProfit(int[] prices) {int len prices.length;if (len < 2) {return 0;}int[] dp new int[3];dp[0] 0;dp[1] -price…

使用Packet Tracer了解网络模型及Lab3 - 1

协议数据单元PDU&#xff08;Protocol Data Unit&#xff09;是指对等层次之间传递的数据单位。协议数据单元(Protocol Data Unit )物理层的 PDU是数据位&#xff08;bit&#xff09;&#xff0c;数据链路层的 PDU是数据帧&#xff08;frame&#xff09;&#xff0c;网络层的PD…

C语言习题

目录 1、数9的个数 2、分数求和 3、求最大值 4、乘法口诀表 4.1、题目内容:在屏幕上输出9*9乘法口诀表 4.2、题目内容:实现一个函数&#xff0c;打印乘法口诀表&#xff0c;口诀表的行数和列数自己指定如:输入9&#xff0c;输出9*9口诀表&#xff0c;输出12&#xff0c;输出12*…

PN结与二极管的特性

PN结的伏安特性 PN结的正向特性 PN结加正向电压时&#xff0c;P区电位高于N区点位&#xff0c;扩散电流大于漂移电流&#xff0c;PN结呈低阻性。 PN结的反向特性 PN结加反向电压时&#xff0c;P区电位低于N区电位&#xff0c;内电场对于扩散运动起到抑制作用&#xff0c;少…

带网络变压器的RJ45网口连接器/集成RJ45网口连接器

​ Hqst华强盛(华轩盛)导读&#xff1a;带网络变压器的RJ45是一种常见的网络连接器&#xff0c;它包含了一个RJ45接口和一个网络变压器&#xff0c;网络变压器位于RJ45接口内部&#xff0c;可以将数据信号转换为适合以太网传输的信号&#xff0c;并具有隔离电路和滤波电…

解决模型半透明时看到内部结构的问题

大家好&#xff0c;我是阿赵。   之前在做钢铁侠线框效果的时候&#xff0c;说到过一种技术&#xff0c;这里单独拿出来再说明一下。   我们经常要做一些模型半透明效果&#xff0c;比如这个钢铁侠的模型&#xff0c;我做了一个Rim边缘光的效果&#xff0c;边缘的地方亮一点…

Python|OpenCV-访问并修改图片像素值,鉴别彩色和灰色图像(6)

前言 本文是该专栏的第6篇,后面将持续分享OpenCV计算机视觉的干货知识,记得关注。 在使用OpenCV对图像进行操作的时候,通常需要熟练掌握一些Numpy知识点。因为有的时候需要用到Numpy和OpenCV结合去实现图像的操作,所以说想要写出较好的OpenCV代码的最好方法,就需要有Nump…

【Verilog 教程】5.2Verilog 模块例化

关键字&#xff1a;例化&#xff0c;generate&#xff0c;全加器&#xff0c;层次访问 在一个模块中引用另一个模块&#xff0c;对其端口进行相关连接&#xff0c;叫做模块例化。模块例化建立了描述的层次。信号端口可以通过位置或名称关联&#xff0c;端口连接也必须遵循一些规…

注解,自定义注解

一、什么是注解 二、自定义注解 /*** 自定义注解*/public interface MyAnnotation {String aaa();boolean bbb() default true;String ccc(); }MyAnnotation ( aaa "牛魔王",ccc "sss") public class Test {MyAnnotation ( aaa "aaa",ccc &q…

WAF Bypass及案例实战

文章目录 WAF Bypass1. WAF1.1 WAF 概述1.1.1 常见 WAF1.1.2 WAF 类别1.1.3 WAF 工作原理1.1.4 WAF 的部署方式 1.2 WAF 指纹识别1.2.1 WAF指纹识别工具 1.3 绕WAF的多种方式 2. SQLi Bypass2.1 Bypass 思路2.1.1 层面问题2.1.2 HTTP问题 2.2 绕过分析2.2.1 绕过方式2.2.2 脚本…

【Linux学习】02Linux基础命令

Linux&#xff08;B站黑马&#xff09;学习笔记 01Linux初识与安装 02Linux基础命令 文章目录 Linux&#xff08;B站黑马&#xff09;学习笔记前言02Linux基础命令Linux的目录结构Linux命令入门ls命令 目录切换相关命令(cd/pwd)cd命令pwd命令 相对路径、绝对路径和特殊路径符创…

Windows11 手把手教授开放端口

首先在控制面板点击“系统与安全”&#xff0c;找到防火墙 然后点击“windows defender”打开防火墙 点击左侧目录栏中“高级设置” 点击“入站规则”&#xff0c;再点击新建入站规则&#xff08;开放端口有开放入站端口与开放出站端口之分&#xff0c;这里讲入站端口的开放…

Web ui自动化测试框架总结

【软件测试面试突击班】如何逼自己一周刷完软件测试八股文教程&#xff0c;刷完面试就稳了&#xff0c;你也可以当高薪软件测试工程师&#xff08;自动化测试&#xff09; 实施过了web系统的UI自动化&#xff0c;回顾梳理下&#xff0c;想到什么写什么&#xff0c;随时补充。 首…

linux c++调用c

参考 【Linux下gcc编译的四个过程】_Deacde_ZY的博客-CSDN博客 C与C如何互相调用_c文件引用c头文件_卍一十二画卍的博客-CSDN博客 Linux动态链接库的创建与使用_linux创建动态库_满天星羽的博客-CSDN博客 c调用c 1.1 例子1&#xff1a; test1.c #include <stdio.h>…

python3GUI--详细讲解一个QQ音乐组件的制作By:PyQt5(详细介绍、附源代码)

文章目录 一&#xff0e;前言二&#xff0e;设计1&#xff0e;思路2&#xff0e;布局3&#xff0e;自定义组件1.支持hover事件的QLabel2.自定义的QToolButton 4&#xff0e;图片圆角5&#xff0e;动画效果 三&#xff0e;源代码四&#xff0e;总结 一&#xff0e;前言 有网友给…

大数据-玩转数据-Flink SQL编程

一、概念 1.1 Apache Flink 两种关系型 API Apache Flink 有两种关系型 API 来做流批统一处理&#xff1a;Table API 和 SQL。 Table API 是用于 Scala 和 Java 语言的查询API&#xff0c;它可以用一种非常直观的方式来组合使用选取、过滤、join 等关系型算子。 Flink SQL 是…

大转盘抽奖活动设计完全指南,轻松打造难忘的客户体验

大转盘抽奖活动是一种非常受欢迎的营销方式&#xff0c;可以吸引消费者参与并增加品牌曝光度。下面将为大家介绍一种简单易学的大转盘抽奖活动制作教程。 首先&#xff0c;我们需要使用第三方平台/工具来制作大转盘抽奖活动。这里以乔拓云平台为例&#xff0c;首先我们需要注册…

基于监督学习的多模态MRI脑肿瘤分割,使用来自超体素的纹理特征(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…