堆栈的一个问题(100分)

  • 主题发起人 主题发起人 dzx_zjg
  • 开始时间 开始时间
D

dzx_zjg

Unregistered / Unconfirmed
GUEST, unregistred user!
假设一个算术表达式中可含有三种括号:圆括号“(”和“)”,方括号“[”和“]”,花括号“{”和“}”,且这三种括号可按任意的次序嵌套使用。以下是利用栈,判别给定表达式中所含括号是否正确配对出现的算法(可设表达式已存入字符型的数组中)。请在程序中划线处填入正确的语句,以完成上述功能。
其中以下是栈的基本操作:
inistack(&s) //构造一个空栈
push(&s,e) //插入元素e为新的栈顶元素
gettop(&s) //取得栈的栈顶元素
pop(&s) //删除栈的栈顶元素
empty(&s) //判断栈是否为空,若为空则返回TRUE,否则返回FALSE
#define m0 100
int correct (exp)
char exp[m0];
{
stack st;
inistack(st);
int i=1;
int tag=1;
while(i<=m0&amp;&amp;tag)
{
if(exp= = ‘{’ || exp= = ‘[’ || exp= = ‘(’ );
if() pop(st);
else
;
;
}
return(tag&amp;&amp;empty(st));
} // correct
这四行语句该怎么写?
 
1:push(st,exp);
2:exp= = ‘}’&amp;&amp;
gettop(&amp;s) == '{'|| exp= = ‘]’&amp;&amp;
gettop(&amp;s) == '[' || xp= = ‘)’&amp;&amp;
gettop(&amp;s) == '('
3:tag=0;
4:i++;
 
后退
顶部