定义:链式存储的栈
第一个节点是栈顶元素,最后一个为栈底元素
链栈四要素
栈空:head.next == null
一般不会溢出
进栈操作,插入到头节点
出栈操作,返回首节点,并返回节点值
底层原理
判断是否为空
public boolean empty() {
return head.next == null;
}
进栈
public void push(E e) {
LinkNode<E> s = new LinkNode<E>(e);
//相当于头插法
s.next = head.next;
head.next = s;
}
出栈
public E pop() {
//判断栈是否为空
if(empty()) {
throw new IllegalArgumentException("栈空");
}
E e = (E)head.next.data;
head.next = head.next.next;
return e;
}
返回栈顶的值
public E peek() {
if(empty()) {
throw new IllegalArgumentException("栈空");
}
E e = head.next.data; //取的是首节点的值
return e;
}