问题描述
- C/C++ 用顺序表实现的括号匹配问题
- 我的代码
#include<stdio.h> #include<string.h> #define TRUE 1 #define FALSE 0 typedef struct { char data[100]; int top; }Stack; int InitStack(Stack stack) { stack.top=-1; return TRUE; } int Push(Stack &stackchar &ch) { if(stack.top == 99) return FALSE; stack.top++; stack.data[stack.top]=ch; return TRUE; } int Pop(Stack &stackchar &ch) { if(stack.top ==-1) return FALSE; ch=stack.data[stack.top]; stack.top--; return TRUE; } int IsEmpty(Stack stack) { if(stack.top ==-1) return TRUE; else return FALSE; } void GetTop(Stack stackchar ch) { if(stack.top ==-1) printf(""????n""); else ch=stack.data[stack.top]; } int Match(char schar str) { if(str ==')' && s =='(') return TRUE; if(str == ']' && s=='[') return TRUE; if(str =='}' && s=='{') return TRUE; return FALSE; } void BracketMatch(char str[]) { Stack stack; int i; char character; InitStack(stack); for(i=0;str[i]!='';i++) { switch(str[i]) { case '(': case '[': case '{': Push(stackstr[i]); break; case ')': case ']': case '}': if(IsEmpty(stack)) { printf(""n???¨???à?àn""); return; } else { GetTop(stackcharacter); if(Match(characterstr[i])) Pop(stackcharacter); else printf(""n?????????¨??????????????×ó?¨??n""); } } } if(IsEmpty(stack)) printf(""n?¨??????!n""); else printf(""n×ó?¨???à?à!n""); } int main() { char str[100]; int i=0; printf(""??????????×?·???×????????¨??n""); gets(str); BracketMatch(str); return 0; }
不能正常运行麻烦帮忙看下程序,谢谢~
解决方案
是报语法错误,还是测试数据没有达到预期呢
时间: 2025-01-05 04:32:53