前面我用了动态数组实现栈,现在我将用链表实现栈,其实操作没什么难度,两种实现方式和栈的性能上大同小异!
------------------------------------------------------------------------------------------------------------------------------------------------
实现接口:stack<E>
实现类:LinkedListStack<E>
导入前面已经封装好的LinkedList类,基本操作都是调用该类的方法进行的。
public class LinkedListStack<E> implements Stack<E> {
private LinkedList<E> list;// 创建链表类的对象
/*
* 构造方法
*/
public LinkedListStack() {
list = new LinkedList<>();
}
@Override
public int getSize() {
return list.getSize();
}
@Override
public boolean isEmpty() {
return list.isEmpty();
}
@Override
public void push(E e) {
list.addFirst(e);
}
@Override
public E pop() {
return list.removeFirst();
}
@Override
public E peek() {
return list.getFirst();
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("Stack: top ").append('[');
sb.append(list);// 将整个链表变成一个字符串
return sb.toString();
}
}
----------------------------------------------------------------------------------------------------------------------------------------------
总结:虽然实现栈的底层结构不同,但是栈的性能差距不大,操作的时间复杂度都是同一级别的,但是当测试样例比较多时,用链表实现的栈耗费时间会多些,因为链表在不停的寻找并开辟内存空间来储存对象。