我们生活中还有很多这样的例子,比如我们在吃桶装薯片的时候,要想吃掉最后一片,就必须把前面的全部吃完;再比如我们浏览网页时候需要退回到之前的某个网页,我们需要一步步的点击后退键。。栈的实现也很简单,只需要一个一维数组和一个指向栈顶的变量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 为基数。
原文地址:https://www.cnblogs.com/caidi/p/5926172.html