1.栈
栈特点:
先进后出
栈像手枪子弹夹一样,最先装进去地子弹,最后出来;
import java.util.Arrays;
import java.util.Scanner;
import javax.management.RuntimeErrorException;
/** 栈地实现*/
public class Stack{
public static void main(String [] args){
MyStack array=new MyStack();
array.push(2);
array.pop();
array.show();
}
}
class MyStack{
int[] elements;
public MyStack(){
elements=new int[]{};
}
//将元素压入栈
public void push(int element){
int[] newarray=new int[elements.length+1];
//将旧数组中地元素复制到新的数组
for(int i=0;i<elements.length;i++){
newarray[i]=elements[i];
}
//将目标元素插入
newarray[elements.length]=element;
//新数组替换旧数组
elements=newarray;
}
//取出栈顶元素,也就是最后一个元素
public int pop(){
//如果栈时空地抛出异常
if(elements.length==0){
throw new RuntimeException("stack is empty");
}
//最后一个元素
int element=elements[elements.length-1];
int[] newarray=new int[elements.length-1];
//将除了最后一个元素地其他元素放入新的数组
for(int i=0;i<elements.length-1;i++){
newarray[i]=elements[i];
}
//替换数组
elements=newarray;
//返回最后一个元素(栈顶元素)
return element;
}
//获得数组中地元素
public void show(){
System.out.println(Arrays.toString(elements));
}
}
2.队列:
特点:先进先出
就如排队买票:先排队的,则先买到票。
代码结果:
先加入的元素是09,最后得到的结果也是从09
import java.util.Arrays;
/**队列的实现*/
public class Queue{
public static void main(String[] args){
MyQueue array=new MyQueue();
//压入元素
for(int i=0;i<10;i++){
array.push(i);
//取出第一个元素
System.out.println(array.pop());
}
}
}
class MyQueue{
int[] elements;
public MyQueue(){
elements=new int[]{};
}
//将元素压入队列
public void push(int element){
int[] newarray=new int[elements.length+1];
//将旧数组中地元素复制到新的数组
for(int i=0;i<elements.length;i++){
newarray[i]=elements[i];
}
//将目标元素插入
newarray[elements.length]=element;
//新数组替换旧数组
elements=newarray;
}
//取出第一个元素
public int pop(){
int[] newarray=new int[elements.length-1];
int element=elements[0];
for(int i=0;i<newarray.length;i++){
newarray[i]=elements[i];
}
elements=newarray;
return element;
}//获取所有元素
public void show(){
System.out.println(Arrays.toString(elements));
}
}