#define stackMaxSize 100 /*定义最大长度*/ typedef struct { /*定义堆栈类型*/
char stack[stackMaxSize];
int top; /*定义整型变量top,记录栈顶元素的位置。*/
}Stack;
void Initstack(Stack *S){ /*置空栈函数*/ }
void Push(Stack *S,char ch){ /*入栈函数*/ (S->top)++; }
void Pop(Stack *S,char *p){ /*出栈函数*/ }
int stackEmpty (Stack *S){ /*判栈空函数*/ }
void clearstack(Stack *S){ /*置空栈函数*/ }
void Bracket(char *str){ /*判断括号匹配函数*/
Stack S1,*S=&S1; S->top=-1;
if(S->top==-1) return 1; /*若top 值为-1,返回1.表示为空栈*/ else return 0; /*否则返回0,表示不为空栈*/ *p=S->stack[S->top]; (S->top)--;
S->stack[S->top]=ch; /*输入元素为栈顶元素*/ S->top=-1; /*top值为-1.*/
char e; /*定义字符变量 e*/
int i=0,flag=0; /*定义整型变量i,flag1,flog2*/ Initstack(S); /*调用置空栈函数*/
while (str[i]!='\\0'){ /*输入字符不为0,执行循环*/ }
switch (str[i]){
case '(': Push(S,'(');break; /*输入为'(',则进栈,并跳出当前循环*/ case ')': Pop(S,&e); /*输入为')',则出栈,并跳出当前循环*/ if(e!='(') flag=1;break;
default:break; /*否则,跳出当前循环*/ } if(flag)
break;
i++; /*继续判断下一字符*/
if(!flag) }
void main() { /*主函数*/ }
char str[100]; /*定义字符数组存放表达式*/ printf(\"请输入表达式:\"); /*提示输入*/ gets(str); /*输入*/
Bracket(str); /*调用判断括号匹配函数*/ else
printf(\"括号不匹配!\\n\"); printf(\"括号匹配!\\n\");
因篇幅问题不能全部显示,请点此查看更多更全内容