//"SqStack.h"
#include<iostream>
using namespace std;
#define SElemType_int int
#define SElemType_char char
#define MAXSIZE 100
typedef struct{
SElemType_int *base;
SElemType_int *top;
int stacksize;
}SqStack_int;
typedef struct{
SElemType_char *base;
SElemType_char *top;
int stacksize;
}SqStack_char;
string InitStack(SqStack_int &S){
S.base = new SElemType_int[MAXSIZE];
S.top = S.base;
S.stacksize=MAXSIZE;
return "OK";
}
string InitStack(SqStack_char &S){
S.base = new SElemType_char[MAXSIZE];
S.top = S.base;
S.stacksize=MAXSIZE;
return "OK";
}
string Push(SqStack_int &S,SElemType_int e){
if(S.top-S.base == S.stacksize) return "ERROR";
*S.top=e;
S.top++;
return "OK";
}
string Push(SqStack_char &S,SElemType_char e){
if(S.top-S.base == S.stacksize) return "ERROR";
*S.top=e;
S.top++;
return "OK";
}
string pop(SqStack_int &S,SElemType_int &e){
if(S.base == S.top) return "ERROE";
S.top--;
e = *S.top;
return "OK";
}
string pop(SqStack_char &S,SElemType_char &e){
if(S.base == S.top) return "ERROE";
S.top--;
e = *S.top;
return "OK";
}
SElemType_int GetTop(SqStack_int S){
if(S.top != S.base){
return *(S.top-1);
}
}
SElemType_char GetTop(SqStack_char S){
if(S.top != S.base){
return *(S.top-1);
}
}
int StackEmpty(SqStack_char S){
if(S.top == S.base) return 1;
return 0;
}
int StackEmpty(SqStack_int S){
if(S.top == S.base) return 1;
return 0;
}
#include<iostream>
#include"SqStack.h"
using namespace std;
/*
判断回文
*/
int main(){
SqStack_char C ;
InitStack(C);
int n;
int flag1 = 0; //判断奇偶
int flag2 = 0; //判断正误
cout <<"How many characters"<<endl;
cin >> n;
cout << "Input one leter per time"<<endl;
char ch;
if(n%2) flag1 = 1;
for(int i=1;i<=(n/2);i++){ //将一半字符入栈
cin >> ch;
Push(C,ch);
}
if(flag1){ //有奇数个字符
cin >> ch;
for(int i=(n/2+2);i<=n;i++){
cin >> ch;
char e;
pop(C,e);
if(ch != e){
flag2 = 1;break; //另外一半字符分别对栈顶字符进行比较
}
}
}else
{
for(int i=(n/2+1);i<=n;i++){
cin >> ch;
char e;
pop(C,e);
if(ch != e){
flag2 = 1;break;
}
}
}
if(flag2) cout <<"WRONG";
else cout << "TRUE";
system("pause");
return 0;
}