柚子快报激活码778899分享:Java数据结构(一):栈

http://yzkb.51969.com/

导言:栈和我们的现实当中的箱子是一样的,保持一个先进后出,后进先出的原则。比如我们往一个箱子堆积衣服,一件一件地放进去之后,过一段时间再回来拿。那么最先放进去的衣服肯定最后拿出来,最后放进去的衣服就会最先拿出来,或许可以类比于给老师提交作业,最先提交作业的同学老师总是最后批改。 因此在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数据结构(一):栈

http://yzkb.51969.com/

文章来源

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。