PTA 7-2 回文判断 (20 分)

    xiaoxiao2022-07-02  98

    回文是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文,但“good”不是回文。编写一个程序,使用栈判定给定的字符序列是否为回文。

    输入格式:

    输入待判断的字符序列,按回车键结束,字符序列长度<20。

    输出格式:

    若字符序列是回文,输出“YES”;否则,输出“NO”。

    输入样例:

    abdba

    输出样例:

    YES

    #include<iostream> #include<cstdlib> #include<string.h> using namespace std; #define N 20 struct Stack{ char s[N]; int top;//指示栈顶元素 }; Stack *SetNullS(Stack *S){//置空栈 S->top = -1; return S; } int Empty(Stack *S){ if(S->top >=0) return 0; else return 1; } Stack *PushStackS(Stack *S, char c){//进栈 if(S->top == N-1){ return NULL; } else{ S->top++; S->s[S->top] = c; } return S; } char *PopS(Stack *S){//出栈 if(S->top < 0) return NULL; else{ S->top--; char *c = (char *)malloc(sizeof(char)); *c = S->s[S->top+1]; return c; } } int main(){ char a[N], b[N]; Stack *S = (Stack*)malloc(sizeof(Stack)); SetNullS(S); cin>>a; if(strlen(a) == 0) cout<<"NO"; for(int i=0; i<strlen(a); i++){ PushStackS(S, a[i]); } for(int i=0; i<strlen(a); i++){ b[i] = *(PopS(S)); } if(strcmp(a, b)) cout<<"NO"; else cout<<"YES"; return 0; }

     

    最新回复(0)