一个简单的括号匹配问题
2011-09-10 18:55
323 查看
//***********************************************************// //***************括号匹配问题 (爱X的味道)****************// //**********************************************************// #include<stdio.h> #include<stdlib.h> #define STACK_SIZE 100 #define TRUE 1 #define FALSE 0 typedef struct z_node { char data[STACK_SIZE]; int top; }z_stack; int InitStack(z_stack *stack) { stack->top=-1; return TRUE; } int Push(z_stack *stack,char &ch) { if(stack->top == STACK_SIZE-1) return FALSE; stack->top++; stack->data[stack->top]=ch; return TRUE; } int Pop(z_stack *stack,char &ch) { if(stack->top ==-1) return FALSE; ch=stack->data[stack->top]; stack->top--; return TRUE; } int IsEmpty(z_stack *stack) { if(stack->top ==-1) return TRUE; else return FALSE; } void GetTop(z_stack *stack,char &ch) { if(stack->top ==-1) printf("栈空\n"); else ch=stack->data[stack->top]; } int Match(char &stack_top,char &str) { if(str ==')' && stack_top =='(') return TRUE; if(str == ']' && stack_top=='[') return TRUE; if(str =='}' && stack_top=='{') return TRUE; return FALSE; } void BracketMatch(char *str) { z_stack stack; int i; char character; InitStack(&stack); for(i=0;str[i]!='\0';i++) { switch(str[i]) { case '(': case '[': case '{': Push(&stack,str[i]); break; case ')': case ']': case '}': if(IsEmpty(&stack)) { printf("\n右括号多余\n"); return; } else { GetTop(&stack,character); if(Match(character,str[i])) Pop(&stack,character); else printf("\n对应的右括号找不到匹配的左括号\n"); } } } if(IsEmpty(&stack)) printf("\n括号匹配!\n"); else printf("\n左括号多余!\n"); } int main() { z_stack *stack; char str[STACK_SIZE]; stack=(z_stack *)malloc(sizeof(z_node)); printf("请输入一个字符串,注意带上括号\n"); gets(str); BracketMatch(str); return 0; }
相关文章推荐
- JS简单实现括号匹配问题
- 链栈的简单实现及括号匹配问题的链栈解决方法
- java--一道简单的括号匹配问题
- java--一道简单的括号匹配问题
- 一个看似简单却复杂的问题:求两个字符串的 左向右匹配 所有的 最长连续的 公共子字符串( 在每个字符串中先后次序相同的) 序列
- 简单的括号匹配问题,只有 ( 和 )。。。其实原理就是开栈最后的状态。。。
- 一个简单的例子说明stable marriage稳定婚姻匹配问题
- JS简单实现括号匹配问题
- 简单括号匹配问题
- 一个小问题(语法分析中的括号匹配)
- 括号匹配问题
- Longest valid Parentheses(括号匹配长度问题)
- 括号匹配问题
- 写一个简单的常识问题以自警
- [栈] 括号匹配问题
- 一个简单的怪问题
- 写一个简单的scala的hello world出现的问题
- c++,数据结构之括号匹配问题
- 强大的C# Expression在一个函数求导问题中的简单运用
- 一个简单的问题