括号匹配测试代码笔记如下:

 #include<stdio.h>
#include<string.h>
#include <stdlib.h>
#define SIZE 10 typedef struct Stack
{
char c[SIZE]; //存放左弧 它是一个字符
int top;
}STACK,*PSTACK; //1.初始化栈
void Init_Stack(PSTACK S) //这里只需要一个参数 把栈传进来初始化
{
S->top = ; //栈顶是从第0个下标开始
for (int i = ; i < SIZE; i++)
{
S->c[i] = ;
}
} //2.入栈操作 void Push_Stack(PSTACK S, char data) //参数1:表明插入的栈 参数2: 要插入的数据
{
//2.1 判断栈是否是满的 如果是满的就退出 满了你还要插入 会报错 if (S->top >= SIZE)
{
printf("栈满!无法继续插入\n");
return; //结束这个函数.
} //2.2 栈没有满
S->c[S->top] = data;
S->top++; //在执行插入操作之后 我的top要+1
} //3.获取栈顶元素 这里只是得到栈顶元素 不是出栈
char GetStackTop(PSTACK S)
{
return S->c[S->top - ];
} //4. 出栈
void Pop_Stack(PSTACK S)
{
//这里我就不判断 判断是不是空 S->top--; //所有操作都是同top去操作 我只需要改变top的位置
} //5.判断是不是空的栈
int Stack_Empty(PSTACK S) //函数返回1 说明什么栈是空的 如果返回0说明栈是有元素的
{
return S->top == ; //等于0说明栈是空的
}
//我只需要在前面代码的基础 加一个函数
int isEatch(PSTACK S, char *str) // 参数1: 指明左弧要入栈的是哪一个栈 参数2:要匹配的字符串 返回值:返回1说明匹配 返回0说明不匹配
{
// 得到要匹配的字符串长度
int len = strlen(str);
//循环遍历每一个字符
for (int i = ; i < len; i++) // () [] {}
{
switch (str[i])
{
case '(':
case '[':
case '{':
//如果是左弧 要入栈 Push_Stack(S, str[i]);
break;
case ')':
if (!Stack_Empty(S) && GetStackTop(S) == '(')
{
Pop_Stack(S);
}
else
{
return ; //如果栈为空 或者 栈顶元素跟当前元素不匹配
}
break;
case ']': //自己写
break;
case '}': //自己写
break;
}
}
//判断最后栈里面是否还有数据 如果右说明是不匹配
if (!Stack_Empty(S))
{
return ;
}
//返回1 说明是匹配的
return ; } int main()
{
STACK MyStack;
Init_Stack(&MyStack);
char Str[];
while ()
{
printf("请输入一个字符串: ");
scanf("%s", Str);
int a = isEatch(&MyStack, Str);
if (a)
{
printf("括号匹配!\n");
}
else
{
printf("括号不匹配!\n");
}
}
return ;
}

C++学习(三十一)(C语言部分)之 栈和队列(括号匹配示例)的更多相关文章

  1. Collection集合重难点梳理,增强for注意事项和三种遍历的应用场景,栈和队列特点,数组和链表特点,ArrayList源码解析, LinkedList-源码解析

    重难点梳理 使用到的新单词: 1.collection[kəˈlekʃn] 聚集 2.empty[ˈempti] 空的 3.clear[klɪə(r)] 清除 4.iterator 迭代器 学习目标: ...

  2. 学习笔记:oracle学习三:SQL语言基础之sql语言简介、用户模式

    目录 1.sql语言简介 1.1 sql语言特点 1.2 sql语言分类 1.3 sql语言的编写规则 2.用户模式 2.1 模式与模式对象 2.2 实例模式scott 本系列是作为学习笔记,用于记录 ...

  3. 学习笔记:oracle学习三:SQL语言基础之检索数据:简单查询、筛选查询

    目录 1. 检索数据 1.1 简单查询 1.1.1 检索所有列 1.1.2 检索指定的列 1.1.3 查询日期列 1.1.4 带有表达式的select语句 1.1.5 为列指定别名 1.1.6 显示不 ...

  4. ballerina 学习 三十一 扩展开发(二)

    上篇说了使用ballerina 语言开发扩展模块,对于注解类型的我们是需要使用java 语言进行 开发的 官方提供了一个hello 的demo可以参考 https://github.com/balle ...

  5. ElasticSearch7.3学习(三十一)----Logstash基础学习

    一.Logstash基本介绍 Logstash 是一个功能强大的工具,可与各种部署集成. 它提供了大量插件,可帮助你解析,丰富,转换和缓冲来自各种来源的数据(文件.数据库......).logstas ...

  6. Java开发学习(三十一)----Maven属性与版本管理

    一.属性 1.1 问题分析 如下图所示 你会发现,如果现在想更新Spring的版本,你会发现依然需要更新多个jar包的版本,这样的话还是有可能出现漏改导致程序出问题,而且改起来也是比较麻烦. 问题清楚 ...

  7. python学习 (三十一) python中的class

    1 python的类:   Python类都继承自object. __init__: 构造函数,如果不写,有一个默认的. __init__: 这个构造函数只能有一个,Python中不能有多个构造函数. ...

  8. 渗透测试学习 三十一、MSF

    术语 测试者利用系统程序或服务的漏洞进行攻击的一个过程——渗透攻击(exploit),攻击载荷(payload) 攻击者在目标系统上执行的一段代码,该代码具有反弹链接,创建用户.执行其他系统命令的功能 ...

  9. 前端学习(三十一)canvas(笔记)

    canvas             画布    画图.做动画.做游戏===========================================    canvas就是新标签 必须获取绘图 ...

随机推荐

  1. 使用 NumPy 和 Matplotlib 绘制函数图

    Numpy是用python进行科学计算的基本程序包. 它主要包含以下功能: ♦强大的n维数组对象 ♦复杂(广播)函数工具 ♦用于集成c/c++和Fortran代码-有用的线性代数 ♦傅里叶变换和随机数 ...

  2. Vue + Element UI 实现权限管理系统(优化登录流程)

    完善登录流程 1. 丰富登录界面 1.1 从 Element 指南中选择组件模板丰富登录界面,放置一个登录界面表单,包含账号密码输入框和登录重置按钮. <template> <el- ...

  3. 4.4基于switch语句的译码器

    Q:已知前缀码如右图所示,求0/1字符串“001011101001011001”相对应的译码. a b c 1 01 001 #include<iostream> #include< ...

  4. zookeeper集群环境搭建(使用kafka的zookeeper搭建zk集群)

    ---恢复内容开始--- 使用kafka的zookeeper来搞集群的话和单纯用zk的其实差不了多少. 0.说在前头,搭建kafka集群之前请把每个服务器的jdk搞起来. 1.安装kafka wget ...

  5. JavaScript -基础- 函数与对象(四) BOM 对象

    一.BOM对象 BOM游览器对象模型,可以与游览器对话 BOM下Window对象最重要,还有history.location对象 二.Window对象方法 1.alert提示框 2.confirm c ...

  6. 安装babel

    http://jamesknelson.com/using-es6-in-the-browser-with-babel-6-and-webpack/

  7. mongoose的笔记

    本文地址转载自:http://www.cnblogs.com/egger/archive/2013/06/14/3135847.html  本文将介绍操作符的使用,配合操作符,我们可以执行更加复杂的操 ...

  8. 安装gcc

    yum -y install gcc yum -y install gcc-c++ yum install make   -- 或者 yum groupinstall "Developmen ...

  9. 实力封装:Unity打包AssetBundle(三)

    前情提要:第二种打包方式 窗口初现 通过前面的两篇教程和一篇番外,我们已经完全实现了打包的功能.但是使用起来总是觉得有些晦涩别扭,如果不告诉别人怎么使用,对方肯定是一头雾水. What?你给我的这是啥 ...

  10. json_encode 处理后的数据是null

    原因: json_encode($str) 中的字符串 必须是 utf-8的格式: -------------------------------- 问题描述: 返回的json数据: <?php ...