java数据机构之自定义栈
一、栈的特点
1、线性数据结构
2、后进先出
二、使用数组来实现栈
//使用数组来实现栈 public class MyArrayStack<E> { //保存数据 private Object[] items; //栈的 容量 private int capacity; //栈的数据个数 private int size; public MyArrayStack(int capacity){ this.capacity = capacity; this.items = new Object[capacity]; } //入栈 public boolean push(E item){ //栈已经满了 if(size == capacity){ return false; } items[size++] = item; return true; } //出栈 @SuppressWarnings("unchecked") public E pop() { if(size == 0){ return null; } E e = (E)items[size-1]; items[--size] = null; return e; } }
三、使用链表来实现栈、
//使用链表创建栈 public class MyLinkedStack<E> { //节点存储元素信息 private static class Node<E>{ E item; Node<E> next;//下一个节点 Node(E item, Node<E> next){ this.item = item; this.next = next; } } //栈的 容量 private int capacity; //栈的数据个数 private int size; //头节点 private Node<E> head; public MyLinkedStack(int capacity){ this.capacity = capacity; } //入栈 public boolean push(E item){ //栈已经满了 if(size == capacity){ return false; } //创建新节点,head指向新的节点 Node<E> node = new Node<>(item,head); head = node; size++; return true; } //出栈 public E pop() { if(size == 0){ return null; } E e = head.item; head.item = null;//方便GC head = head.next; size--; return e; } }