一、核心思想
棧只允許訪問一個數據項,也就是最后插入的數據項,只有移除了這個數據項才能訪問倒數第二個插入的數據項。先進后出。
二、源碼
package com.ctw;
/**
* @author TongWei.Chen 2018-09-29 13:37:14
* @Description:
* @Project sjjg-sf
*/
public class MyStack {
private int maxSize;
private long[] arr;
// 棧頂位置
private int top;
// 構造器
public MyStack(int size) {
maxSize = size;
arr = new long[maxSize];
top = -1;
}
// 入棧
public void push(long value) {
arr[++ top] = value;
/*
* 上面一句話等于下面兩句話:
* top ++;
* arr[top] = value;
*/
}
// 出棧
public long pop() {
return arr[top --];
/*
* 上面一句話等于下面三句話:
* long value = arr[top];
* top --;
* return value;
*/
}
// 訪問棧頂元素
public long peek() {
return arr[top];
}
// 棧是否為空
public boolean isEmpty() {
return top == -1;
}
// 棧是否滿了
public boolean isFull() {
return top == maxSize - 1;
}
public static void main(String[] args) {
MyStack myStack = new MyStack(6);
myStack.push(1L);
myStack.push(2L);
myStack.push(3L);
myStack.push(4L);
myStack.push(-100L);
System.out.println(myStack.peek());
while (! myStack.isEmpty()) {
System.out.println(myStack.pop());
}
}
}
三、廣告
-
碼云地址
QQ群【Java初學者學習交流群】:458430385
-
微信公眾號【Java碼農社區】
img 今日頭條號:編程界的小學生