int Matching( void ) {Stack S; InitStack( S ); int flag = 1; char ch; scanf(“%c”, &ch ); while( ch!=‘#’ && flag ){ switch( ch){ case ‘[‘: case ‘(‘: push( S, ch ); break; case ‘)’: if( !StackEmpty(S)&&GetTop(S)==‘(‘ ) pop(S,x); else flag = 0; break; case ‘]’: if( !StackEmpty(S)&&GetTop(S)==‘[‘ ) pop(S,x); else flag = 0; break; } scanf(“%c”, &ch ); } if (StackEmpty( S ) && flag) return 1; else return 0; } void main( ) { int i; i = Matching( ); if( i==1 ) printf(“匹配!”); else printf(“不匹配!”); } 添加栈操作函数,使上面的程序能够运行
时间: 2024-03-22 22:37:27 浏览: 80
可以参考下面的代码实现栈操作函数:
```
#define MAXSIZE 100 //栈的最大长度
typedef struct {
char data[MAXSIZE]; //存储栈中元素
int top; //栈顶指针
} Stack;
//初始化栈
void InitStack(Stack &S) {
S.top = -1;
}
//判断栈是否为空
bool StackEmpty(Stack S) {
return S.top == -1;
}
//判断栈是否已满
bool StackFull(Stack S) {
return S.top == MAXSIZE - 1;
}
//入栈
bool Push(Stack &S, char x) {
if (StackFull(S)) {
return false;
}
S.data[++S.top] = x;
return true;
}
//出栈
bool Pop(Stack &S, char &x) {
if (StackEmpty(S)) {
return false;
}
x = S.data[S.top--];
return true;
}
//获取栈顶元素
bool GetTop(Stack S, char &x) {
if (StackEmpty(S)) {
return false;
}
x = S.data[S.top];
return true;
}
```
然后将这些函数添加到原有代码中即可。
阅读全文