3.16 void Train arrange(char* Train这里用字符串tain表示火车,H表示硬席S表示 软席 p= train, q≡tran Init Stack(s) if(*p=H)push(s,*p),把H存入栈中 else*(q++)=*p;/把S'调到前部 p+ while(!Stack Empty(s)) pop(s, c) *(q+)=c;∥把H接在后部 i//Train arrange 3.17 int IsReverseo∥判断输入的字符串中&前和&后部分是否为逆串,是则返回1,否 则返回0 Init Stack(s) while((e=getchar)I=&') ife=@) retur0∥不允许在&之前出现@ push(s, e); while( (e=getchar)l=@) if(Stack Empty(s)return 0 pop(s, c if(el=c)return 0 if(STack Empty(s))return 0; un 3//rEverse 3.18 Status Bracket Test(char*str判别表达式中小括号是否匹配3.16 void Train_arrange(char *train)//这里用字符串 train 表示火车,'H'表示硬席,'S'表示 软席 { p=train;q=train; InitStack(s); while(*p) { if(*p=='H') push(s,*p); //把'H'存入栈中 else *(q++)=*p; //把'S'调到前部 p++; } while(!StackEmpty(s)) { pop(s,c); *(q++)=c; //把'H'接在后部 } }//Train_arrange 3.17 int IsReverse()//判断输入的字符串中'&'前和'&'后部分是否为逆串,是则返回 1,否 则返回 0 { InitStack(s); while((e=getchar())!='&') { if(e==’@’) return 0;//不允许在’&’之前出现’@’ push(s,e); } while( (e=getchar())!='@') { if(StackEmpty(s)) return 0; pop(s,c); if(e!=c) return 0; } if(!StackEmpty(s)) return 0; return 1; }//IsReverse 3.18 Status Bracket_Test(char *str)//判别表达式中小括号是否匹配 {