栈有着后进先出的特点,只允许在一端进行删除和添加,在操作的那一边被称为栈顶,另一边成为栈底
方法介绍
Stack() 创建个空栈
E pop() 弹出栈顶元素
E push() 放入元素
E peek() 获取栈顶元素
boolean empty() 检测栈是否为空
int size() 获取存入的元素
栈的模拟实现
点击查看代码
public class MyStack {int[] array;int size;public MyStack(){array = new int[10];}public int push(int val){ensureCapacity();array[size] = val;size++;return val;}public int pop(){return array[size--];}public int peek(){if(array.length == 0){throw new RuntimeException("栈为空");}return array[size - 1];}public boolean isEmpty(){return array.length == size;}private void ensureCapacity(){if(isEmpty()){array = Arrays.copyOf(array,array.length * 2);}}
}
点击查看代码
public class MyQueue {public static class ListNode{int val;ListNode next;ListNode prev;ListNode(int val){this.val = val;}}ListNode first;ListNode last;int size;public void offer(int val){ListNode node = new ListNode(val);if(first == null){first = node;size++;last = node;return;}last.next = node;node.prev = last;size++;last = node;}public int poll(){if (first == null) {throw new RuntimeException("队列为空");}int val = first.val;if(first == last){first = null;last = null;size--;return val;}first.next.prev = null;first = first.next;size--;return val;}public int size(){return size;}public int peek(){if(first == null){throw new RuntimeException("队列为空");}return first.val;}
}
