@ghostfn1
2016-07-23T07:11:28.000000Z
字数 658
阅读 3008
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 initializationfor(i=0;i<=mid;i++)s[++top]=a[i]; //Push//determine string's length.if(len%2==0)next=mid+1;elsenext=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");elseprintf("NO");getchar();getchar();return 0;}
比如:
输入:
1121211
结果:
YES
输入:
1121
结果:
NO