栈
栈(Stack)
栈是一种基于先进后处的数据结构,是一种只能在一端进行插入和删除操作的特殊线性表,按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读取数据时从栈顶开始弹出数据。

1. 栈的API设计

2. 栈的代码实现
public class Stack<T>{
private Node head;
private int N;
private class Node{
public T item;
public Node next;
public Node(T item, Node next) {
this.item = item;
this.next = next;
}
}
public Stack() {
this.head = new Node(null,null);
this.N = 0;
}
//判断栈中元素是否为空
public boolean isEmpty(){
return N==0;
}
//获取栈中元素的个数
public int size(){
return N;
}
//把元素压入栈
public void push(T t){
//找到首结点指向的第一个节点
Node oldFirst = head.next;
//创建新结点
Node newNode = new Node(t, null);
//让首结点指向新结点
head.next = newNode;
//让新结点指向原来的首结点的第一个节点
newNode.next = oldFirst;
N++;
}
//弹栈
public T pop(){
//找到首结点指向的第一个结点
Node oldFirst = head.next;
//让首结点指向下一个结点的下一个结点
if (oldFirst == null){
return null;
}
head.next = oldFirst.next;
N--;
return null;
}
}

浙公网安备 33010602011771号