#include <stdio.h>
#include <stdlib.h>
#define STACK_INIT_SIZE 20
#define STACKINCREMENT 10
   5:  
/*将char类型定义为ElemType*/
/*定义一个栈类型*/
   8:     ElemType *base;
   9:     ElemType *top;
int stacksize;
  11: } sqStack;
  12:  
  13:  
void initStack(sqStack *s)
  15: {
/*内存中开辟一段连续空间作为栈空间,首地址赋值给s->base*/
sizeof(ElemType));
  18:  
/*分配空间失败*/
  20:  
/*最开始,栈顶就是栈底*/
/*最大容量为STACK_INIT_SIZE */
  23: }
  24:  
/*入栈操作*/
if(s->top - s->base >= s->stacksize) {
/*栈满,追加空间*/
  28:         s->base = (ElemType *)realloc(s->base, (s->stacksize +
sizeof(ElemType));
  30:  
/*存储分配失败*/
  32:  
  33:         s->top = s->base + s->stacksize;
/*设置栈的最大容量*/
  35:     }
  36:  
/*放入数据*/
  38:     s->top++;
  39: }
  40:  
/*出栈操作*/
/*将栈顶元素弹出*/
  43:  
/*修改栈顶指针*/
  45: }
  46:  
/*获得栈s的大小*/
return (s.top - s.base) ;
  49: }
  50:  
  51:  
void  translate(ElemType e, sqStack *s) {
  53:     ElemType c , a;
  54:     sqStack ss1;
  55:  
, e);
);
);
'(')
  60:     {
  61:  
/*初始化栈ss1,用来将括号里面的内容从栈中取出*/
/*注意*s相当于主函数中的s*/
/*保留括号后的第一个元素*/
  65:         Pop(&(*s), &c);
  66:  
')') {
  68:             Push(&ss1, a);
  69:             Push(&ss1, c);
  70:             Pop(&(*s), &c);
  71:         }
  72:  
/*并按语法规定排列后从右至左进入一个新栈ss1*/
  74:  
/*翻译括号里的内容*/
  76:         {
/*取出ss1中的元素c*/
/*递归地调用函数 translate对元素c进行翻译*/
  79:         }
  80:     }
  81: }
  82:  
int main()
  84: {
  85:     ElemType e;
  86:     sqStack s1, s2;
/*初始化栈s1*/
  88:  
);
, &e);
  91:  
'#')
  93:     {
')')
/*输入的魔王语言合法*/
/*入栈*/
  97:  
  98:         }
  99:  
, &e);
 101:     }
 102:  
 103:  
/*初始化栈s2*/
 105:  
while(StackLen(s1))
 107:     {
 108:         Pop(&s1, &e);
/*将魔王语言从右至左入栈s2*/
 111:     }
 112:  
);
 114:  
while(StackLen(s2))
 116:     {
 117:         Pop(&s2, &e);
 118:         translate(e, &s2) ;
 119:     }
 120:  
return 0;
 122:  
 123: }

相关文章:

  • 2021-10-24
  • 2021-07-11
  • 2021-12-28
  • 2021-08-18
  • 2021-10-03
  • 2022-02-10
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-10-20
  • 2021-06-01
  • 2021-06-22
  • 2021-12-24
  • 2021-06-18
  • 2021-07-07
  • 2021-04-23
相关资源
相似解决方案