试写一算法,判断依次读入的一个以@为结束符的字母序列,是 否为形如'序列 1&序列 2'模式的字符序列。其中序列 1 和序列 2 中都 不含字符'&',且序列 2 是序列 1 的逆序列.
#include <iostream>
using namespace std;
#define max 10
char a[20];
typedef struct stack{
char a[max];
int top;
}S;
void initS(S& s){
s.top = -1;
}
void push(S& s, char e){
s.a[++s.top] = e;
}
char pop(S& s){
return s.a[s.top--];
}
bool fun(S s){
int i;
for (i = 0; a[i] != '&'; i++){
if (a[i] != '&'){
push(s, a[i]);
}
}
i++;
for (; a[i] != '@'; i++){
if (a[i] == '&'){
return false;
}
else{
if (pop(s) != a[i]){
return false;
}
}
}
if (s.top == -1){
return true;
}
}
int main() {
S s;
initS(s);
cin >> a;
cout << fun(s);
return 0;
}