以下从开源中国拷过来的,开源中不打算用了,换一个博客。
最近暂时不工作,也有一些时间来学习,平时经常写一些很无味,很雷同的代码,感觉整个人都不好了,这几天正好可以好好利用,温习一下数据结构,对逻辑思维的锻炼和日后工作还是有一些帮助的。
今天先说一下数据结构中很简单很常见的栈,栈的特点就是先进后出,其实就像大学食堂的餐盘,服务人员在放餐盘的时候会一个个摞起来,最先放的肯定是摞完后最下面的,最后放的是摞完后最上面的那个,而去食堂的大学生想取餐盘肯定也是从最上面的那个取,直到最后一个被取走。栈也是一个道理。鄙人懒,还是不画图了。
闲话少说,还是上代码吧。
/**这里用数组来模拟栈*/
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());
}
}
鉴于这个例子太简单了,就不多做解释了,下一篇介绍队列
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。