链栈
1.是一个栈,栈顶进出元素,单链表有头指针,栈顶也有指针,将它们的指针合二为一,将栈顶放在单链表的头部比较合适。
2.单链表的头结点链栈不需要
进栈
栈顶在头部相当于对头添加元素
public void push(E e) {
list.addFirst(e); //头插法插入一个元素
}
出栈
栈顶在头部,对一个头元素进行删除
public E pop() {
return list.removeFirst();
}
toString()与equals()
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("LinkedStack : size="+getSize()+"\n");
if(isEmpty()){
sb.append("[]");
}else{
sb.append('[');
for(int i=0;i<getSize();i++){
sb.append(list.get(i));
if(i!=getSize()-1){
sb.append(',');
}else{
sb.append(']');
}
}
}
return sb.toString();
}
@Override
public boolean equals(Object obj) {
if(obj==null){
return false;
}
if(obj==this){
return true;
}
if(obj instanceof LinkedStack){
LinkedStack stack = (LinkedStack) obj;
if(stack.getSize()==getSize()){
return list.equals(stack.list);
}
}
return false;
}