柚子快报激活码778899分享:Java数据结构(一):栈
导言:栈和我们的现实当中的箱子是一样的,保持一个先进后出,后进先出的原则。比如我们往一个箱子堆积衣服,一件一件地放进去之后,过一段时间再回来拿。那么最先放进去的衣服肯定最后拿出来,最后放进去的衣服就会最先拿出来,或许可以类比于给老师提交作业,最先提交作业的同学老师总是最后批改。 因此在Java里面我们可以通过一个数组来模拟这个栈。
首先我们可以构建一个栈,然后在另外一个类当中对栈进行插入数据和移除数据的操作。
一.Mystack.java
/**
* Created by lenovo on 2019/5/11.
*/
public class Mystack {
//底层实现是一个数组
private long[] arr;
private int top;
//默认的构造方法
public Mystack()
{
arr=new long[10];
top=-1;
}
//带参数的构造方法,参数为数组的初始化大小
public Mystack(int maxsize)
{
arr=new long[maxsize];
top=-1;
}
//往栈里添加数据
public void push(int value)
{
arr[++top]=value;
}
//移除数据
public long pop()
{
return arr[top--];
}
//查看数据
public long peek()
{
return arr[top];
}
//判断是否为空
public boolean isEmpty()
{
return top == -1;
}
//判断是否满了
public boolean isFull()
{
return top==arr.length-1;//因为top是从0开始的
}
}
然后我们在一个类当中对这个栈进行操作即可。
二.TestMyStack.java
/**
* Created by lenovo on 2019/5/11.
*/
public class TestMyStack {
public static void main(String[] args) {
Mystack ms=new Mystack(4);//竟然要在主函数里面进行调用才会管用,太神奇了
ms.push(23);
ms.push(12);
ms.push(1);
ms.push(90);
System.out.println(ms.isEmpty());
System.out.println(ms.isFull());
System.out.println(ms.peek());
System.out.println(ms.peek());
while(!ms.isEmpty())
{
System.out.println(ms.pop()+",");
}
System.out.println(ms.isEmpty());
System.out.println(ms.isFull());
}
最后的输出结果为:
false
true
90
90
90,
1,
12,
23,
true
false
上面的代码很容易理解,我也就不多讲了。关键是要理解这种后进先出的数据结构是如何实现的。
柚子快报激活码778899分享:Java数据结构(一):栈
文章来源
发表评论