#include
#include
#include
#include
#include
#include
#define size 500
#define addsize 100
using namespace std;
//栈的内部结构
typedef struct {
char *base;
char *top;
int stack_size;
}SqStack;
//stack 的初始化
bool InitStack(SqStack &S) {
S.base = (char*)malloc(size * sizeof(char));
if (!S.base)
return false;
S.top = S.base;
S.stack_size = size;
return true;
}
//入栈
bool PushStack(SqStack &S,char elem) {
//先判断是否满栈
if (S.top - S.base >= size) {
S.base = (char*)realloc(S.base, (size + addsize) * sizeof(char));
if (!S.base)
return false;
S.top = S.base + S.stack_size;
S.stack_size += addsize;
}
*S.top++ = elem;
return true;
}
//判断栈是否为空
bool EmptyStack(SqStack S) {
if (S.base == S.top)
return true;
return false;
}
//出栈
bool PopStack(SqStack &S, char &elem) {
if (S.base == S.top)
return false;
elem = *--S.top;
return true;
}
int main(){
system("color 70");
string input, result;
char swap;
SqStack S;
InitStack(S);
getline(cin, input);
int len = input.length();
//入栈
for (int i = 0; i < len; i++) {
if (!PushStack(S, input[i])) {
cout << "入栈失败!" << endl;
break;
}
}
//出栈
while (PopStack(S, swap))
result += swap;
//比较
if (input == result)
cout << "Right" << endl;
else
cout << "Wrong" << endl;
return 0;
}