栈是一种后进后出的数据结构,限定为只能在一端进行插入和删除操作。栈的实现需要一个一维数组和一个指向栈顶的变量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"); }