zoukankan      html  css  js  c++  java
  • 我们生活中还有很多这样的例子,比如我们在吃桶装薯片的时候,要想吃掉最后一片,就必须把前面的全部吃完;再比如我们浏览网页时候需要退回到之前的某个网页,我们需要一步步的点击后退键。。栈的实现也很简单,只需要一个一维数组和一个指向栈顶的变量top就可以了。我们通过变量top来对栈进行插入和删除操作。

    这种特殊的数据结构栈究竟有哪些作用呢?我们来看一个例子。“xyzyx”是一个回文字符串,所谓回文字符串就是指正读反读均相同的字符序列,如“***”、“记书记”、“aha”和“ahaha”均是回文,但“ahah”不是回文。通过栈这个数据结构我们将很容易判断一个字符串是否为回文。

    如果一个字符串是回文的话,那么它必须是中间对称,我们需要求这个字符串的中点,即:mid=len/2-1;
           接下来就轮到栈出场了。
           我们先将mid之前的部分的字符全部入栈。因为这里的栈是用来存储字符的,所以这里用来实现栈的数组类型是字符数组即char s[101]; 初始化栈很简单,top=0;就可以了。入栈的操作是top++;s[top]=x; (假设需要入栈的字符存储暂存在字符变量x中)其实可以简写为s[++top]=x;现在我们就来将mid之前的字符依次全部入栈。这里循环要0开始,读取的第一个字符存储在s[0]中,最后一个字符存储在s[mid-1]中。
     
      接下来进入判断回文的关键步骤。将当前栈中的字符依次出栈,看看是否能与mid之后的字符一一匹配,如果都能匹配则说明这个字符串是回文字符串,否则这个字符串就不是回文字符串。
     

    java.util.stack接口Stack<E>

    方法摘要
     boolean empty() 
              测试堆栈是否为空。
     E peek() 
              查看堆栈顶部的对象,但不从堆栈中移除它。
     E pop() 
              移除堆栈顶部的对象,并作为此函数的值返回该对象。
     E push(E item) 
              把项压入堆栈顶部。
     int search(Object o) 
              返回对象在堆栈中的位置,以 1 为基数。
  • 相关阅读:
    (转)Pythonfunctools详解
    (转)这有 73 个例子,彻底掌握 fstring 用法!
    (转)你不一定全知道的四种Python装饰器实现详解
    (转)学习Python,怎能不懂点PEP呢?
    (转)5个案例详解装饰器 | 手把手教你入门Python之四十六
    (转)Python 对象协议
    (转)functools — 函数操作工具箱
    (转)Python 魔术方法指南
    Python 对象协议
    (转)Python timeit模块的使用实践
  • 原文地址:https://www.cnblogs.com/caidi/p/5926172.html
Copyright © 2011-2022 走看看