#include<stdio.h> #include<string.h> #define MaxSize 100 typedef char DataType; typedef struct { DataType stack[MaxSize]; int top; }SeqStack; void StackInitiate(SeqStack *s)//初始化 { s->top=0; } int StackNotEmpty(SeqStack s)//非空否 { if(s.top<= 0) return 0; else return 1; } int StackPush(SeqStack *s,DataType x)//入栈 { if(s->top>=MaxSize) { return 0; } else { s->stack[s->top]=x; s->top++; return 1; } } int StackPop(SeqStack *s,DataType *d)//出栈 { if(s->top<=0) { return 0; } else { s->top--; *d=s->stack[s->top]; return 1; } } int StackTop(SeqStack s,DataType *d)//取栈顶数据 { if(s.top<=0) { return 0; } else { *d=s.stack[s.top-1]; return 1; } } int main() { SeqStack l; char a[100],b[100]; char e; int n,i,first; scanf("%s",a); n=strlen(a); StackInitiate(&l); for(i=0;i<n/2;i++) { StackPush(&l,a[i]); } for(i=0;i<n/2;i++) { StackTop(l,&b[i]); StackPop(&l,&e); } if(n%2==0) { for(i=0;i<n/2;i++) { if(b[i]==a[i+n/2]) first=1; else { first=0; break; } } if(first) printf("yes"); else printf("no"); } else { for(i=0;i<n/2;i++) { if(b[i]==a[i+1+n/2]) first=1; else { first=0; break; } } if(first) printf("yes"); else printf("no"); } }
原文:http://www.cnblogs.com/yc721274287/p/4438362.html