1.栈 先进后出
package math;
public class arraystack {
private int[] elements = new int[0];
//入栈
public void push(int k){
int[] newarr = new int[elements.length+1];
for(int i = 0 ; i<elements.length; i++){
newarr[i]=elements[i];
}
newarr[elements.length]= k ;
elements = newarr ;
}
//出栈
public int pop(){
if(elements.length==0){
throw new RuntimeException("stack is empty.");
}
int[] newarr = new int[elements.length-1];
int element = elements[elements.length-1];
for(int i = 0 ; i<elements.length-1;i++){
newarr[i]=elements[i];
}
elements=newarr ;
return element ;
}
//查看栈顶元素
public int peek(){
if(elements.length==0){
throw new RuntimeException("stack is empty.");
}else{
return elements[elements.length-1];
}
}
//判空
public boolean isEmpty(){
return elements.length==0 ;
}
//栈元素个数
public int size(){
return elements.length ;
}
}
2.队列
先进先出
package math;
public class arrayQueue {
int[] elements = new int[0];
//入队
public void push(int k){
int[] newarr = new int[elements.length+1];
for(int i = 0 ; i<elements.length; i++){
newarr[i]=elements[i];
}
newarr[elements.length]= k ;
elements = newarr ;
}
//出队
public int pop(){
if(elements.length==0){
throw new RuntimeException("queue is empty.");
}
int[] newarr = new int[elements.length-1];
int element = elements[0];
for(int i=0 ; i<elements.length-1 ;i++){
newarr[i]=elements[i+1];
}
elements= newarr ;
return element ;
}
//查看队首
public int peek(){
if(elements.length==0){
throw new RuntimeException("queue is empty.");
}else{
return elements[0];
}
}
//判空
public boolean isEmpty(){
return elements.length==0 ;
}
//元素个数
public int size(){
return elements.length ;
}
}