可利用一个栈来检查表达式中的括号是否匹配,其方法是:初始时设置栈为空,然后从左到右扫描表达式,遇到左括号“(”就将其入栈,遇到右括号“)”就执行出栈操作,忽略其他符号。在检查表达式“a*(b+c))-d”时,由于(),因此可判断出该表达式中的括号不匹配。
A.需要进行出栈操作但栈已空
B. 需要进行入栈操作但栈已满
C. 表达式处理已结束,但栈中仍留有字符“(”
D. 表达式处理已结束,但栈中仍留有字符")”
A.需要进行出栈操作但栈已空
B. 需要进行入栈操作但栈已满
C. 表达式处理已结束,但栈中仍留有字符“(”
D. 表达式处理已结束,但栈中仍留有字符")”
第1题
A.需要进行出栈操作但栈已空
B.需要进行入栈操作但栈已满
C.表达式处理已结束,但栈中仍留有字符“(”
D.表达式处理已结束,但栈中仍留有字符")”
第2题
A、需要进行出栈操作但栈已空
B、需要进行入栈操作但栈已满
C、表达式处理已结束,但栈中仍留有字符“(”
D、表达式处理已结束,但栈中仍留有字符“)”
第3题
A.栈为空却要进行出栈操作
B.栈已满却要进行入栈操作
C.表达式处理已结束,栈中仍留有字符“(”
D.表达式处理已结束,栈中仍留有字符“)”
第4题
A.栈为空却要进行出栈操作
B.栈已满却要进行入栈操作
C.表达式处理已结束,栈中仍留有字符“(”
D.表达式处理已结束,栈中仍留有字符“)”
第5题
A.栈为空却要进行出栈操作
B. 栈已满却要进行入栈操作
C. 表达式处理已结束,栈中仍留有字符“(”
D. 表达式处理已结束,栈中仍留有字符“)”
第6题
A.栈为空却要进行出栈操作
B.表达式处理已结束,栈中仍留下有字符“(”
C.栈已满却要进行入栈操作
D.表达式处理已结束,栈中仍留下有字符“)”
第7题
A.栈为空却要进行出栈操作
B.栈已满却要进行入栈操作
C.表达式处理已结束,栈中仍留下有字符“(”
D.表达式处理已结束,栈中仍留下有字符“)”
第8题
编写一个算法判断输入的表达式中3种括号是否配对(左、右圆括号(),方括号[],大括号{})。 bool Match3 (char exp[],int n) 提示:和圆括号思路一样,都是左括号进栈。遇到右括号,进行判断。 空栈,返回false。 栈顶元素的左括号和右括号不配对(比如’(’与’]’),返回false(回顾取栈顶元素的函数是哪个?)。 栈顶元素的左括号与右括号能配对(比如’[’与’]’),则出栈。 所有操作完成后,栈空吗?空栈返回true,非空栈返回false。
第9题
【题目描述】
试题四(共15分)
阅读以下说明和C函数,填补C函数中的空缺(1)~(5),将解答写在答题纸的对应栏内。
【说明】
假设一个算术表达式中可以包含以下三种括号:“(”和“)”、"[”和“]”、“{”和“}”,并且这三种括号可以按照任意的次序嵌套使用。
下面仅考虑表达式中括号的匹配关系,其他问题暂时忽略。例如,表达式“[a.(b.5)]*c[{}]”中的括号是完全匹配的,而表达式“[a-(b-5]))*c”中的括号不是完全匹配的,因为“(”与“]”不能匹配,而且多了一个“)”,即缺少一个与“)”相匹配的“(”。 函数ifmatched (char expr[])的功能是用栈来判断表达式中的括号是否匹配,表达式以字符串的形式存储在字符数组expr中。若表达式中的括号完全匹配,则该函数的返回值为Matched,否则返回值为Mismatched。
该函数的处理思路如下:
(1)设置一个初始为空的栈,从左至右扫描表达式。
(2)若遇上左括号,则令其入栈;若遇上右括号,则需要与栈顶的左括号进行匹配。
(3)若所遇到的右括号能与栈顶的左括号配对,则令栈顶的左括号出栈,然后继续匹配过程;否则返回Mismatched,结束判断过程。
(4)若表达式扫描结束,同时栈变为空,则说明表达式中的括号能完全匹配,返回Matched。 函数ifMatched中用到了两种用户自定义数据类型BOOL 和STACK,其中,BOOL类型的定义如下:
typedef enum {Mismatched, Matched}BOOL;
STACK(即栈类型)的定义省略,栈的基本操作的函数原型说明如下:
void InitStack(STACK *S):初始化一个空栈。
void Push(STACK *S,char e):将一个字符压栈,栈中元素数目增1。
void Pop(STACK *S):栈顶元素出栈,栈中元素数目减1。
char Top(STACK S):返回非空栈S的栈顶元素值,栈中元素数目不变。
int IsEmpty(STACK S):若S是空栈,则返回1,否则返回0。
【我提交的答案】:(1)cptr++ (2)Push(&S,*cptr) (3)Top(STACK S) (4)Pop(STACK *S) (5)IsEmpty(STACK S)
【参考答案分析】:试题四参考答案(共 15分)
(1) cptr++或++cptr 或cptr +=1 或cptr = cptr+1 (3分)
(2) Push(&S,*cptr) (3 分)
(3) Top(S) (3分)
(4)Pop(&S) (3分)
(5) Is Empty(S) (3分)
【我的疑问】(如下,请求专家帮助解答)
老师,我第二题的答案写成:Push(STACK *S,*cptr),这样写对吗?会给分吗?我第三题写成:Top(STACK S),这样写对吗?会给分吗?
为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!