栈的实现
AbstactStack类
public abstract class AbstractStack<E> { public abstract void pop(); public abstract void push(E e); public abstract E top(); }
用顺序表实现栈
public class ArrayStack<E> extends AbstractStack<E>{ private Object[] arr=new Object[20]; private int size=0; @Override public void pop() { size--; } @Override public void push(E e) { if(size>=arr.length){ Object[] arr=new Object[this.arr.length+10]; for (int i = 0; i < this.arr.length; i++) arr[i]=this.arr[i]; this.arr=arr; } arr[size++]=e; } @Override public E top() { return (E) arr[size-1]; } }
用链表实现栈
public class LinkedStack<E> extends AbstractStack<E> { static class Node<E>{ private E e; private Node<E> next; public Node(){}; public Node(E e){ this.e=e; } } private Node<E> head=new Node<>(); private int size=0; @Override public void pop() { size--; } @Override public void push(E e) { Node node=head; for (int i = 0; i < size; i++) node=node.next; node.next=new Node<>(e); size++; } @Override public E top() { Node node=head; for (int i = 0; i < size; i++) node=node.next; return (E) node.e; } }

浙公网安备 33010602011771号