一、栈的特点
先进后出
二、用顺序表实现栈
//顺序表表尾进行插入删除操作
public class myStack {
int[] array = new int[100];
int size = 0;//记录栈中的元素个数
//入栈
public void push(int value) {
//栈满了的话,就不能再插入元素了
if (size == array.length) {
return;
}
//如果已经有元素,那么肯定是从末尾进行插入
array[size] = value;
size++;
}
//出栈
public Integer pop() {
//如果栈为空的话
if (size == 0) {
return null;
}
//元素出栈
int ret=array[size-1];
size--;
return ret;
}
//取栈顶元素
public Integer peek(){
//如果栈为空的话
if (size == 0) {
return null;
}
return array[size-1];
}
三、用链表实现栈
//栈用链表实现,链表头进行插入和删除元素
public class myStack2 {
//先定义一个节点类信息
static class Node{
private int val;
private Node next;
public Node(int val) {
this.val = val;
}
}
private Node head=new Node(-1);
//入栈
public void push(int val){
Node node=new Node(val);
node.next=head.next;
head.next=node;
}
//出栈
public Integer pop(){
//说明栈中没有元素
if(head.next==null){
return null;
}
//有元素
Node del=head.next;
head.next=del.next;
return del.val;
}
//取栈顶元素
public Integer peek(){
//说明栈中没有元素
if(head.next==null){
return null;
}
//有元素
return head.next.val;
}