栈是一种后进后出的数据结构,限定为只能在一端进行插入和删除操作。栈的实现需要一个一维数组和一个指向栈顶的变量top。
举例:判断字符串是否为回文串(如果一个字符串是回文的话,那么它必须是中间对称的,求出中点mid,然后将mid之前的字符全部入栈。关键步骤是将当前栈中的字符依次出栈,判断能否与mid之后的字符一一匹配)
#include<stdio.h>
#include<string.h>
int main(void)
{
char a[101], s[101];
int i, len, mid, next, top;
scanf("%s", s);
len = strlen(a);
mid = len/2 -1;
top = 0; // 栈的初始化
//将mid前的字符依次入栈
for(i = 0; i <= mid; i++) {
s[++top] = a[i];
}
//判断字符串的长度是奇数还是偶数, 并找出需要进行字符匹配的起始下标
if(len % 2 ==0 ) {
next = mid + 1;
}else {
next = mid + 2;
}
//开始匹配
for(i = next; i <= len - 1; i++) {
if(a[i] != s[top]) break;
top--;
}
//如果top的值为0,则说明栈内所有的字符都被一一匹配了
if(top == 0)
printf("YES");
else
printf("NO");
}