{
S、base=(SElemType *)realloc(S、base,(STACK_INIT_SIZE+STACKINCREMENT) *
sizeof(SElemType)); } //出栈
Status Pop (SqStack &S,SElemType &e) { }
if(S、base==S、top) return ERROR; e=*--S、top; return OK; }
*S、top++=e; return OK;
if(!S、base) exit(ERROR); S、top=S、base+S、stacksize; S、stacksize+=STACKINCREMENT;
//main、cpp
#include\、h\int main() {
char c; SElemType e; SqStack S; InitStack(S);
while((c=getchar())!='#') {
switch(c) {
case '(':
case '[': case '{':
Push (S,c); break;
case ')':
if (S、top==S、base) {
}
GetTop(S,e); if (e=='(') { } break;
Pop(S,e); break;
case ']':
if (S、top==S、base)
{
}
GetTop(S,e); if (e=='[') { } break;
Pop(S,e); break;
case '}':
if (S、top==S、base)
{
break;
}
}
}
}
GetTop(S,e); if (e=='{') { }
Pop(S,e);
break;
if (S、base==S、top) { } else { } return OK;
cout<<\括号不完全匹配\ cout<<\括号完全匹配\
? 运行结果:
(5) 利用栈实现表达式得求值。
? 代码部分: //SqStack、h
#include
typedef struct SqStack{
SElemType data; struct SqStack * next;
}SqStack,*LinkStack; const int OK=1; const int ERROR=0;
Status InitStack(LinkStack &S);//创建栈 Status Push(LinkStack &S,SElemType e);//入栈 Status Pop(LinkStack &S,SElemType &e);//出栈 SElemType GetTop(LinkStack &S);//得到顶部数据 SElemType EvaluateExpression();//表达式求值 Status In(char c,char *OP);//判断C就是否就是数 SElemType Precede(char x,char y);//判断优先关系
SElemType Operate(char a,char thate,char b);//运算返回结果
//SqStack、cpp
#include\、h\
Status InitStack(LinkStack &S){ }
Status Push(LinkStack &S,SElemType e){
//入栈 SqStack *p;
p=(LinkStack)malloc(sizeof(SElemType)); if (!p) exit (ERROR); p->data=e; p->next=S->next; //创建栈
S=(LinkStack)malloc(sizeof(SElemType)); if (!S) exit (ERROR); S->next=NULL; return OK;
相关推荐: