【数据结构】链表实现栈

前面我用了动态数组实现栈,现在我将用链表实现栈,其实操作没什么难度,两种实现方式和栈的性能上大同小异!

------------------------------------------------------------------------------------------------------------------------------------------------

实现接口: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();
	}
}

----------------------------------------------------------------------------------------------------------------------------------------------

总结:虽然实现栈的底层结构不同,但是栈的性能差距不大,操作的时间复杂度都是同一级别的,但是当测试样例比较多时,用链表实现的栈耗费时间会多些,因为链表在不停的寻找并开辟内存空间来储存对象。

猜你喜欢

转载自blog.csdn.net/qq_42370146/article/details/83001757