📄 习题2-括号配对检查.c
字号:
#include "datastru.h"
#include <stdio.h>
void initstack(SEQSTACK *s)
/*顺序栈初始化*/
{ s->top = 0; }
int push(SEQSTACK *s, DATATYPE1 x)
{/*元素x入栈*/
if(s->top == MAXSIZE - 1)
{printf("栈满\n"); return 0;}
else
{s->top++; (s->data)[s->top] = x; return 1;}
}
DATATYPE1 pop(SEQSTACK *s)
{/*返回栈顶元素并删除栈顶元素*/
DATATYPE1 x;
if(s->top == 0)
{printf("栈空\n"); x = 0;}
else
{x = (s->data)[s->top]; s->top--;}
return x;
}
DATATYPE1 gettop(SEQSTACK *s)
{/*返回栈顶元素*/
DATATYPE1 x;
if(s->top == 0)
{printf("栈空\n"); x = 0;}
else
x = (s->data)[s->top];
return x;
}
check(SEQSTACK *s)
{
int bool;
char ch;
push(s,'#');
printf("\n请输入一串括号,回车键结束 :");
ch = getchar();
bool = 1;
while(ch != '\n' && bool)
{ if(ch == '(')
push(s,ch); /*遇到左括号,左括号入栈*/
if(ch == ')') /*遇到右括号时处理如下:*/
if(gettop(s) == '#') bool = 0; /*(1)栈顶元素为#号,配对错误*/
else pop(s); /*(2)栈顶元素为左括号,消括号*/
ch = getchar();} /*继续处理*/
if(gettop(s) != '#')
bool = 0;
if(bool)
printf("\n括号配对正确\n");
else
printf("\n括号配对错误\n");
}
main()
{
SEQSTACK st, *s;
s = &st;
initstack(s);
check(s);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -