zhangdell 2019-06-27
以下从开源中国拷过来的,开源中不打算用了,换一个博客。
最近暂时不工作,也有一些时间来学习,平时经常写一些很无味,很雷同的代码,感觉整个人都不好了,这几天正好可以好好利用,温习一下数据结构,对逻辑思维的锻炼和日后工作还是有一些帮助的。
今天先说一下数据结构中很简单很常见的栈,栈的特点就是先进后出,其实就像大学食堂的餐盘,服务人员在放餐盘的时候会一个个摞起来,最先放的肯定是摞完后最下面的,最后放的是摞完后最上面的那个,而去食堂的大学生想取餐盘肯定也是从最上面的那个取,直到最后一个被取走。栈也是一个道理。鄙人懒,还是不画图了。
闲话少说,还是上代码吧。
/**这里用数组来模拟栈*/ 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(){ if(!isEmpty()){ return arr[top]; }else return 0; } /** * 判断是否为空 */ public boolean isEmpty(){ return top == -1; } /** * 判断是否满了 */ public boolean isFull(){ return top == arr.length-1; } }
测试类
package stack_queue; 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.peek()); } System.out.println(ms.isEmpty()); System.out.println(ms.isFull()); } }
鉴于这个例子太简单了,就不多做解释了,下一篇介绍队列