1.思路
实现 栈的 思路分析
1. 使用数组来模拟栈
2. 定义一个 top 来表示栈顶,初始化 为 -1
3. 入栈的 *** 作,当有数据加入到栈时, top++; stack[top] = data;
4. 出栈的 *** 作, int value = stack[top]; top--, return value
2.代码实现
public class ArrayStack {
private int maxSize; //栈的大小
private int [] stack; // 数组模拟栈
private int top=-1;
public ArrayStack(int size) {
this.maxSize=size;
stack=new int [maxSize];
}
//栈满
public boolean isFull() {
return top==maxSize-1;
}
//栈空
public boolean isEmpty() {
return top==-1;
}
//入栈
public void push(int val) {
if(isFull()) {
System.out.println("栈满");
return;
}
++top;
stack[top]=val;
}
//出栈
public int pop() {
if(isEmpty()) {
throw new RuntimeException("栈空,没有数据");
}
int val=stack[top];
--top;
return val;
}
public int peek() {
if(isEmpty()) {
throw new RuntimeException("栈空,没有数据");
}
return stack[top];
}
//从栈低开始遍历栈
public void list() {
if(isEmpty()) {
System.out.println("栈空,没有数据");
return;
}
for(int i=top;i>=0;--i) {
System.out.printf("stack[%d] = %d \n",i,stack[i]);
}
}
}
public class Test {
public static void main(String[] args) {
ArrayStack stack=new ArrayStack(5);
for(int i=0;i<5;i++) {
stack.push((int) (Math.random()*100));
}
stack.list();
System.out.printf("pop: %d \n",stack.pop());
stack.list();
System.out.println("栈顶元素是 peek:"+stack.peek());
stack.list();
}
}
运算结果:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)