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);
}
}
}
运行次数而非时间(因为不同机器的运行环境不同)
空间复杂度
占用内存大小
程序的难易程度
能否一读便通
健壮性
能处理各种非法异常
字段表示一个事物的属性(列)
记录表示一个事物(行)
表是同一类事物的集合
视图是为了简化查询
程序 = 数据的存储 + 数据的操作 + 可以被计算机执行的语言