典型的栈结构如下图所示:栈结构只能在一端操作,该操作端叫做栈顶,另一端叫做栈底。栈结构按照“后进先出”(Last In First Out, LIFO)的方式处理结点数据。
其实栈结构是一种受限制的线性数据结构。
有没有想到我们程序为什么要使用栈?什么程序是栈实现的?
学了这么久的编程, 是否听说过, 函数调用栈呢?
清楚了上面这个调用流程就应该知道栈的重要性了吧。在Java中已经跟我们封装好了 Stock
类就是栈结构
首先了解一下栈中的常用方法?
push(element)
: 添加一个新元素到栈顶位置.
pop()
:移除栈顶的元素,同时返回被移除的元素。
peek()
:返回栈顶的元素,不对栈做任何修改(这个方法不会移除栈顶的元素,仅仅返回它)。
isEmpty()
:如果栈里没有任何元素就返回true
,否则返回false
。
clear()
:移除栈里的所有元素。
size()
:返回栈里的元素个数。这个方法和数组的length
属性很类似。
知道了栈的一些基本概念之后,接下来就来实操一下。例子:十进制数转成二进制。
在日常中我们都是用十进制数,但是在计算机底层都是用二进制数进行计算。那我们如何用栈来实现?
上面涉及到十转二 用到的辗转相除法 不会的可以取了解下, 具体代码处理如下:
public static String SysConvert(int number){
Stack<Integer> stack = new Stack<>();
int remainder;
// 对十进制数进行取余 将结果放到栈中
while (number!=0){
remainder = number%2;
number /=2;
stack.push(remainder);
}
String result = "";
// 最后去栈中数据得出最后二进制结果
while (!stack.empty()){
result += stack.pop();
}
return result;
}
栈在程序中还有很多很多用法!!!!自己可以去拓展~~
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。