栈的实现之需要一个一维数组和一个指向栈顶的变量top即可。通过top对栈进行插入和删除操作。
初始化栈只需要top=0;
入栈:top++;s[top]=x;简写为s[++top]=x;
栈可以用来判断回文,验证括号的匹配等
题目代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <ctype.h>
#include <string.h>
const int max=1000;
int main() {
char a[101],s[101];
int len, mid,next,top;
gets(a); //读入一行字符串
len=(int)strlen(a);
mid=len/2-1; //求字符串的中点
top=0; //栈的初始化
//将mid之前的字符依次入栈
for (int i=0; i<=mid; i++) {
s[++top]=a[i];
}
//判断字符串的长度是奇数还是偶数,并找出需要进行字符串匹配的起始下标
if(len%2==0)next=mid+1;
else next=mid+2;
//开始匹配
for(int i=next;i<=len-1;i++){
if(a[i]!=s[top])break;
top--;
}
//如果top的值为0,则说明栈内所有的字符都被一一匹配了
if(top==0)
printf("YES\n");
else printf("NO\n");
getchar();getchar();
return 0;
}