Java数据结构--ArrayList、链表、队列、栈(三)

1.栈和队列

栈:先进后出

队列:先进先出

2.栈的基本操作

(1)初始值

private T[] element;
private int top;

(2)入栈

public void push(T value) {
    if (top == element.length) {
        element = Arrays.copyOf(element, element.length << 1);
    }
    element[top] = value;
    top++;

(3)出栈

public void pop(T value) {
    if (top == 0) {
        return;
    }
    element[--top] = null;

}

(4)返回栈顶元素

public T peek() {
    if (top == 0) {
        throw new EmptyStackException();
    }
    return element[top - 1];

}

(5)两个栈模拟队列

public class twoStackToOneQueue {

    public static<T> void twoStackToOneQueue(T[] arr){
        Stack<T> stack1=new Stack<>();
        Stack<T> stack2=new Stack<>();
        for(int i=0;i<arr.length;i++){
            stack1.push(arr[i]);
        }
        while(!stack1.isEmpty()){
            T value=stack1.peek();
            stack2.push(value);
            stack1.pop();
        }
        while(!stack2.isEmpty()){
            System.out.println(stack2.peek()+" ");
            stack2.pop();
        }
        T value=stack1.peek();
        stack2.push(value);
    }
}

2.队列

(1)初始值

private  T[] element;
private int size;
private static final int ININSIZE=10;
public MyQueue(){
    element=(T[])new Object[ININSIZE] ;
}

(2)入队

public void push(T value) {
    if (size == element.length) {
        element = Arrays.copyOf(element, element.length *2);

    }
    element[size++]=value;
}

(3)出队

public void pop(T value){
if(size==0){
    return;
}
 for(int i=1;i<size;i++) {
     element[i - 1] = element[i];
 }
     element[size-1]=null;
     size--;
 }

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值