文档章节

括号匹配

奔跑的猴子
 奔跑的猴子
发布于 2014/09/01 19:25
字数 199
阅读 30
收藏 0
/*
    Author:Cuinp
	Date:2014/9/1
*/
#include <stdio.h>
#include <string.h>
#define BUFSIZE 64
bool bracesMatch(char *);
int main() {
	char buf[BUFSIZE];
	memset(buf,0,BUFSIZE);
	while(1) {
		printf("Please input braces express(quit):\n");
		fgets(buf,BUFSIZE,stdin);
		if(strcmp(buf,"quit") == 0){
			break;
		}
		if(bracesMatch(buf) == true){
			printf("Braces macth successfully!\n");
		} else {
			printf("Braces macth failed!\n");
		}
	}
	return 0;
}
bool bracesMatch(char *exp) {
	char stack[BUFSIZE];
	int sp = -1;			// Stack pointer
	char ch = '\0';
	int i = 0;
	while(exp[i] != '\0') {
		ch = exp[i];
		switch(ch) {
			case '{':
			case '[':
			case '(':
				stack[++sp] = exp[i];	// 'Left braces' inStack
				break;
			case '}':
				if(sp!= -1 && stack[sp] == '{') {
					sp--;				// If match stack top item the outStack
				} else {
					return false;
				}
				break;
			case ']':
				if(sp!= -1 && stack[sp] == '[') {
					sp--;
				} else {
					return false;
				}
				break;
			case ')':
				if(sp!= -1 && stack[sp] == '(') {
					sp--;
				} else {
					return false;
				}
				break;
			default:
				break;			// Read other character the skip
		} // Switch end
		i++;
	} // While end

	if(sp == -1) {				// If stack is empty
		return true;
	} else {
		return false;
	}
}


© 著作权归作者所有

奔跑的猴子
粉丝 1
博文 16
码字总数 2508
作品 0
西安
程序员
私信 提问
栈的应用----判断括号是否匹配

好好学习,天天向上 题目要求 判断字符串中的括号是否能配对,括号不能有交叉,如({[])}是匹配的,(([])和([)]是不匹配的。 解题思考 通过判断左括号和右括号的数量是否相等,无法排除不同类括号...

小草凡
2017/09/14
0
0
使用栈进行括号匹配的判断

1.栈 栈是一种后进先出(LIFO)的数据结构,其内部使用链表实现,栈的元素通常有取顶操作,即从栈顶先弹出元素,压栈操作也是从栈顶压入栈内.C++中头文件包含了栈这个数据结构,因此我们可以调用它....

断桥残雪断桥残雪
2016/04/05
510
0
java:数据结构(二)栈的应用(括号匹配)

一.什么是括号匹配: 括号匹配就是利用计算机辨别表达式里面的括号是否书写成功 例如: {()((a)) }这就是一个正确 (()()  这就是一个错误的 二.括号匹配的算法: 众所周知,括号...

dark_Souls
02/18
0
0
POJ ~ 1068 ~ Parencodings (规律 + 模拟)

题意:T组测试数据,然后给你n,给你P序列让你求W序列。P[i]的意义是的在第i个右括号前面有多少个左括号,w[i]的意义是,在第i个右括号和与他匹配的左括号中有多少个括号,包括自己。 思路:...

zscdst
2018/04/09
0
0
STL——括号匹配

Problem D: STL——括号匹配 Time Limit: 1 Sec Memory Limit: 128 MB Description 给出一堆括号,看其是否匹配,例如 ()、()()、(()) 这样的括号就匹配,)(、)()) 而这样的括号就不匹配 In...

流氓兔来啦
2016/11/06
78
0

没有更多内容

加载失败,请刷新页面

加载更多

好程序员Java学习路线分享MyBatis之线程优化

  好程序员Java学习路线分享MyBatis之线程优化,我们的项目存在大量用户同时访问的情况,那么就会出现大量线程并发访问数据库,这样会带来线程同步问题,本章我们将讨论MyBatis的线程同步问...

好程序员官方
25分钟前
6
0
IDEA 自定义方法注解模板

IDEA 自定义方法注解模板 1、使用效果 /*** 计算交易费用* @Author wangjiafang* @Date 2019/9/11* @param feeComputeVo* @return*/@PostMapping("/v1/fee_compute")public ApiResp......

小白的成长
25分钟前
6
0
转:进程 线程 协程 管程 纤程 概念对比理解

引言 不知道是不是我自己本身就有那么一丝丝的密集恐惧,把这么一大堆看起来很相似很相关的概念放在一起,看起来是有点麻,捋一捋感觉舒服多了。 相关概念 任务、作业(Job,Task,Schedule)...

xiaomin0322
36分钟前
6
0
前端数组转化成字符串

val=val.join(","); 转化后:“1,2,3”

郭周园
39分钟前
4
0
Spring Boot Admin配置详解

Client端配置 参数 默认值 说明 spring.boot.admin.client.enabled true 是否启用springbootAdmin客户端 spring.boot.admin.client.url 要注册的server端的url地址。如果要同时在多个server端...

兜兜毛毛
39分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部