栈:底层为数组
与手枪压子弹一样,先进的后出,后进的先出。
下面是代码演示:
package com.ShuJu;
/*
Creat by CJ 2022/2/26 15:00
*/
import java.util.Arrays;
public class MyStack {
//栈的底层是用数组来存储数据的
int[] elements;
public MyStack(){
elements = new int[0];
}
//压入元素,即增加数组元素
public void push (int element){
//创建一个新数组
int[] newArr = new int[elements.length + 1];
for(int i = 0 ; i < elements.length;i++){
newArr[i] = elements[i];
}
newArr[elements.length] = element;
elements = newArr;
}
//取出栈顶元素
public int pop(){
if(elements.length == 0 ){
throw new RuntimeException("栈为空");
}
//取出栈顶元素
int element = elements[elements.length -1];
//前面都复制过去
int[] newArr = new int[elements.length - 1];
for(int i = 0 ; i < elements.length-1; i++){
newArr[i] = elements[i];
}
elements = newArr;
return element;
}
}
Test:
package com.ShuJu;
/*
Creat by CJ 2022/2/26 15:19
*/
import com.ShuJu.MyStack;
public class TestMyStack {
public static void main(String[] args) {
//创建一个栈
MyStack ms = new MyStack();
ms.push(9);
ms.push(8);
ms.push(7);
System.out.println(ms.pop());
System.out.println(ms.pop());
System.out.println(ms.pop());
System.out.println(ms.pop());
}
}
队列:底层为数组
排队:先进先出
代码实现:
package com.ShuJu;
/*
Creat by CJ 2022/2/26 15:45
*/
public class MyQueue {
int[] elements;
public MyQueue(){
elements = new int[0];
}
//入队,即增加数组元素
public void add (int element){
//创建一个新数组
int[] newArr = new int[elements.length + 1];
for(int i = 0 ; i < elements.length;i++){
newArr[i] = elements[i];
}
newArr[elements.length] = element;
elements = newArr;
}
//出队,前面的先出去
public int pull(){
int[] newArr = new int[elements.length -1] ;
//第一个元素取出来
int element = elements[0];
//其余的复制就完了
for(int i = 0 ; i < newArr.length; i++){
newArr[i] = elements[i + 1];
}
elements = newArr;
return element;
}
public boolean isempty(){
return elements.length == 0;
}
}
Test:
package com.ShuJu;
/*
Creat by CJ 2022/2/26 15:45
*/
public class TestMyQueue {
public static void main(String[] args) {
MyQueue mq = new MyQueue();
mq.add(9);
mq.add(8);
mq.add(7);
System.out.println(mq.pull());
System.out.println(mq.pull());
mq.add(6);
System.out.println(mq.pull());
System.out.println(mq.isempty());
System.out.println(mq.pull());
System.out.println(mq.isempty());
}
}