【数据结构】用链表实现栈

 class Node<E> {
     Node<E>next=null;
     E data;
     public Node(E data) {this.data=data;}
}

public class Stack<E> {
    Node<E>top=null;
    public boolean isEmpty() {
        return top==null;
    }
    /*新建一个结点,该节点指向当前的头结点
     *再修改top指向新建的结点*/
    public void push(E data) {
        Node<E>newNode=new Node<E>(data);
        newNode.next=top;
        top=newNode;
    }
    /*
     * 将当前的top结点的值保存到data
     * 再把top的指针指向下一个结点*/
    public E pop() {
        if(isEmpty())
            return null;
        E data=top.data;
        top=top.next;
        return data;
    }
    public E peek() {
        if(isEmpty()) {
            return null;
        }
        return top.data;
    }
}

用数组实现栈

```
import java.util.Arrays;

public class Mystack<E>{

        private Object[] stack;
        private int size;

        public Mystack() {
            stack=new Object[10];
        }

        public boolean isEmpty() {
            return size==0;
        }

        public E peek() {
            if(isEmpty()) {
                return null;
            }
            return(E) stack[size-1];
        }

        public E pop() {
            E e=peek();
            stack[size-1]=null;
            size--;
            return e;
        }

        public E push(E item) {
            ensureCapacity(size+1);
            stack[size++]=item;
            return item;
        }

        private void ensureCapacity(int size) {
            int len=stack.length;
            if(size>len) {
                int newLen=10;
                stack=Arrays.copyOf(stack,newLen);
            }
        }
}




时间复杂度

运行次数而非时间(因为不同机器的运行环境不同)

空间复杂度

占用内存大小

程序的难易程度

能否一读便通

健壮性

能处理各种非法异常

字段表示一个事物的属性(列)
记录表示一个事物(行)
表是同一类事物的集合
视图是为了简化查询
程序 = 数据的存储 + 数据的操作 + 可以被计算机执行的语言






时间复杂度

猜你喜欢

转载自blog.csdn.net/v2020877/article/details/82291465