来源:互联网 发布:java bigdecimal取整 编辑:程序博客网 时间:2024/06/05 23:03

栈的实现只需要一个一维数组和一个指向栈顶的变量top即可。通过top来对栈进行插入和删除操作。

 

判断一个字符串是否是回文。

若一个字符串是回文的,那么它必须是中间对称的,即求出mid

再把mid之前的字符全部入栈,此处的栈是用来存储字符,实现栈的数组类型是字符数组即chars[101];初始化栈很简单,top=0即可。入栈的操作top++;s[top]=x;(假设需要入栈的字符暂存在字符变量x中),可以简写s[++top]=x;

接着判断是否是回文。将当前栈的字符依次出栈,看看是否与mid之后的字符一一匹配,如果能匹配则说明这个字符串是回文字符串,否则不是。

#include<stdio.h>  #include<string.h>  int main() {      char a[101],s[101];      int i,len,mid,next,top;      gets(a);//读入一个字符串      len=strlen(a)-1;//字符串长度      mid=len/2;//求字符串中点            top=0;//栈的初始化      for(i=0;i<=mid;i++)//将mid之前的字符依次入栈          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!");                    getchar();getchar();//用来暂停程序,以便查看程序输出内容       return 0;  }  

栈还可以用来进行匹配括号。


原创粉丝点击