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 为基数。
  • 相关阅读:
    页面置换算法
    常见内存分配算法
    进程枚举
    NET程序之小试牛刀
    周易起名大师 v18.0算法分析
    VMP分析笔记(cmp命令在VM中的表达)
    一个重启验证软件的算法分析
    一次艰辛的算法分析---------飘零4.0封包分析
    某音频格式转换器算法分析
    一次苦中作乐的追码过程(下)
  • 原文地址:https://www.cnblogs.com/caidi/p/5926172.html
Copyright © 2011-2022 走看看