栈
先进后出
public class MyStack {
private int[] elememts;
public MyStack() {
this.elememts = new int[0];
}
/**
* 获取大小
*
* @return
*/
public int size() {
return elememts.length;
}
/**
* 入栈
*
* @param element 入栈元素
*/
public void push(int element) {
int[] newArr = new int[elememts.length + 1];
for (int i = 0; i < elememts.length; i++) {
newArr[i] = elememts[i];
}
newArr[elememts.length] = element;
elememts = newArr;
}
/**
* 出栈
*
* @return
*/
public int pop() {
if (elememts.length == 0) {
throw new RuntimeException("空栈");
}
// 栈顶元素
int element = elememts[elememts.length - 1];
int[] newArr = new int[elememts.length - 1];
for (int i = 0; i < newArr.length; i++) {
newArr[i] = elememts[i];
}
elememts = newArr;
return element;
}
/**
* 获取栈顶元素
*
* @return
*/
public int peek() {
return elememts[elememts.length - 1];
}
/**
* 查看栈是否为空
*
* @return
*/
public boolean isEmpty() {
return elememts.length == 0;
}
/**
* 查看所有元素
*
* @return
*/
public String show() {
return Arrays.toString(elememts);
}
}
队列
先进先出
public class MyQueue {
private int[] elememts;
public MyQueue() {
this.elememts = new int[0];
}
public int size() {
return elememts.length;
}
public void add(int elememt) {
int[] newArr = new int[elememts.length + 1];
for (int i = 0; i < elememts.length; i++) {
newArr[i] = elememts[i];
}
newArr[elememts.length] = elememt;
elememts = newArr;
}
public int del() {
int element = elememts[0];
int[] newArr = new int[elememts.length - 1];
for (int i = 0; i < newArr.length; i++) {
newArr[i] = elememts[i + 1];
}
elememts = newArr;
return element;
}
}
https://gitee.com/longhaicheng/Data-Structures-and-Algorithms