1.在push(入栈)的时候,是先移动在顶端的箭头(+1),然后才插入数据。
2.在pop(出栈)的时候,是先把数据移除,然后使箭头下移一位(-1),
入栈和出栈的操作步骤正好相反。 8)
比如stack是一个栈,top是其下标,如果要插入i到其栈中
则stact[++top] = i;
出栈则是stack[top--] :oops:
简单代码示例 :lol:
最主要的还是入栈和出栈两个方法,printlnMeWithoutString就是简单打印的工具类,没什么,就是不爱输入Sys....而省事 :)
2.在pop(出栈)的时候,是先把数据移除,然后使箭头下移一位(-1),
入栈和出栈的操作步骤正好相反。 8)
比如stack是一个栈,top是其下标,如果要插入i到其栈中
则stact[++top] = i;
出栈则是stack[top--] :oops:
简单代码示例 :lol:
package com.javaeye.liubey.algorithm.stack;
import org.lx.print.Print;
/**
*
* 项目名称:algorithm
* 包名称:com.javaeye.liubey.algorithm.stack
* 类名称:Stack.java
* 描述: 简单的栈测试类 使用数据模仿
* 创建人:Eason.Lau
* 创建时间:2010-7-16 下午03:11:41
* Copyright http://liubey.iteye.com/
* @version
*
*/
public class Stack {
public static void main(String[] args) {
StackX stack = new StackX(10);
stack.push(10);
stack.push(20);
stack.push(30);
stack.push(40);
//循环输出
while(!stack.isEmpty()) {
long value = stack.pop();
Print.printlnMeWithoutString(value);
}
}
}
/*
* 使用数组模仿栈
*/
class StackX {
private int maxSize;//最大容量
private long[] arrayStack;
private int top;//栈顶
public StackX(int n) {
maxSize = n;
arrayStack = new long[maxSize];
top = -1;
}
//入栈
public void push(long j) {
arrayStack[++top] = j;
}
//出栈
public long pop() {
return arrayStack[top--];
}
//查看
public long view() {
return arrayStack[top];
}
//栈是否是空
public boolean isEmpty() {
return (top == -1);
}
//栈是否满了
public boolean isFull() {
return (top == maxSize - 1);
}
}
最主要的还是入栈和出栈两个方法,printlnMeWithoutString就是简单打印的工具类,没什么,就是不爱输入Sys....而省事 :)