C 栈实现括号匹配//本程序以经亲测,在VS2008中复制即可实现。
// Stack_made_by_zrz.cpp : 定义控制台应用程序的入口点。
//括号匹配问题。利用栈来解决一个字符串之中使用的括号是否匹配的问题。
/*
在表达式中,相同类型的括号(包括:()、[ ]、{})是成对出现的,并且当括号在表达式中嵌套时,不允许出现交叉现象。
检验括号匹配的方法,就是对给定的字符串依次检验:若是左括号,入栈;若是右括号,出栈一个左括号判断是否与之匹配;
是其他字符,不检验。检验到字符串尾,还要检查栈是否为空。只有栈...
//本程序以经亲测,在VS2008中复制即可实现。
// Stack_made_by_zrz.cpp : 定义控制台应用程序的入口点。
//括号匹配问题。利用栈来解决一个字符串之中使用的括号是否匹配的问题。
/*
在表达式中,相同类型的括号(包括:()、[ ]、{})是成对出现的,并且当括号在表达式中嵌套时,不允许出现交叉现象。
检验括号匹配的方法,就是对给定的字符串依次检验:若是左括号,入栈;若是右括号,出栈一个左括号判断是否与之匹配;
是其他字符,不检验。检验到字符串尾,还要检查栈是否为空。只有栈空,整个字符串才是括号匹配的。
*/
#include"stdafx.h"
#include
#include
#include
using namespace std;
#define stacksize 100 //定义栈的空间大小
struct stack{ //定义栈的结构体
char strstack[stacksize];//定义栈的存储格式为字符型
int top; //定义栈的栈顶变量
};
void InitStack(stack &s){ //定义一个新栈s,初始化栈顶为-1
s.top = -1;
}
char Push(stack &s, char a){ //入栈操作,将字符a入栈s
if (s.top == stacksize - 1) //当栈顶为栈的空间大小-1,栈满
return 0;
s.top ++;//入栈操作一次,栈顶+1
s.strstack[s.top] = a;//此时,栈顶元素为字符a
return a;
}
char Pop(stack &s ){ //出栈操作
if (s.top == -1) //当栈顶为-1时,栈空
return 0;
char a = s.strstack[s.top];//将栈顶元素赋予字符a,并返回字符a,完成出栈操作
s.top--;
return a;
}
int Empty(stack &s,int re){ //定义判断栈是否为空的函数
if(s.top==-1)
return 1;//栈为空时返回值为
else
return 0;//栈不为空时返回值为
}
int Check(char* str){ //检验括号是否匹配的函数
stack s;
InitStack(s);
int strn = strlen(str); //定义字符串长度为strn
for (int i=0;i>str; //从键盘输入字符存储到字符数组中,有输入则继续。
int re=Check(str);
if (re==1)
cout<<"您输入的字符串中的括号完全匹配!"<
本文档为【C 栈实现括号匹配】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。