简单易懂数据结构和算法--《啊哈!算法》--栈

导叙:根据啊哈磊老师的《啊哈!算法》整理的学习笔记,如有侵权,联系删除
图书链接:https://pan.baidu.com/s/18qNteKTnKJJpdo7Dks50FA
提取码:ym1t
关注微信公众“伊斯电子编程”获取更多资源

还有一种是后进先出的数据结构,它叫做栈。栈限定为只能在一端进行插入和删除操作。比如说有一个小桶,小桶的直径只能放一个小球,我们现在小桶内依次放入 2、1、3 号小球。假如你现在需要拿出 2 号小球,那就必须先将 3 号小球拿出,再拿出 1 号小球,最后才能将 2 号小球拿出来。在刚才取小球的过程中,我们最先放进去的小球最后才能拿出来,最后放进去的小球却可以最先拿出来

简单易懂数据结构和算法--《啊哈!算法》--栈_第1张图片
简单易懂数据结构和算法--《啊哈!算法》--栈_第2张图片
最后如果 top 的值为 0,就说明栈内所有的字符都被一一匹配了,那么这个字符串就是
回文字符串。完整的代码如下:

#include  
#include  
int main() 
{ 
 char a[101],s[101]; 
 int i,len,mid,next,top; 
 
 gets(a); //读入一行字符串
 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"); 
 getchar();getchar(); 
 return 0; 
}

可以输入以下数据进行验证。
ahaha
运行结果是:
YES

你可能感兴趣的:(简单易懂数据结构和算法--《啊哈!算法》--栈)