@ghostfn1
2016-07-23T15:11:28.000000Z
字数 658
阅读 2854
C++
算法
Update Time:160723 Noon Saturday.
栈是一种后进先出的线性表,简称 LIFO结构。
栈只能在一端进行插入和删除操作,我们把允许插入和删除的一端称为栈顶,另一端称为栈底,不含任何数据元素的栈称为空栈。示意图如下[1]:
可以用栈来判断回文字符串[2]:
#include <stdio.h>
#include <string.h>
int main()
{
char a[101],s[101];
int i,len,mid,next,top;
gets(a); //Read the strings.
len=strlen(a);
mid=len/2-1; //string's midpoint.
top=0;//Stack initialization
for(i=0;i<=mid;i++)
s[++top]=a[i]; //Push
//determine string's length.
if(len%2==0)
next=mid+1;
else
next=mid+2;
//Matching.
for(i=next;i<=len-1;i++)
{
if(a[i]!=s[top])
break;
top--;
}
//top==0 means that matching is complete.
if(top==0)
printf("YES");
else
printf("NO");
getchar();getchar();
return 0;
}
比如:
输入:
1121211
结果:
YES
输入:
1121
结果:
NO