LinkedList分析(队列和栈的实现方法)

时间:2024-05-23 14:22:39

参考:https://blog.****.net/huangfan322/article/details/52756441

1、LinkedList实现了Deque和Queue接口,可以按照队列、栈和双端队列的方式进行操作

2、LinkedList就是数据结构中的链表,这种数据结构有这样的特性:

   (1)分配内存空间不是必须连续的

   (2)插入、删除操作很快,只要修改前后指针就OK了,时间复杂度为O(1)

   (3)访问比较慢,必须得从第一个元素开始遍历,时间复杂度为O(n)

3、利用LinkedList实现队列Queue操作:(队列的操作就是先进先出,尾部加数据,头部删数据)

 (1)在尾部添加元素,add(),offer();但是,add()会在长度不够时抛出异常:IllegalStateException;  offer()则不会,只返回false

(2) 查看头部元素,element(),peek();element()会在没元素时抛出异常:NoSuchElementException;  peek()返回null;

(3)删除头部元素,remove(),poll(),返回头部元素,并且从队列中删除;remove()会在没元素时抛出异常:NoSuchElementException;  poll()返回null;

LinkedList分析(队列和栈的实现方法)

4、实现双端队列Deque

LinkedList分析(队列和栈的实现方法)

5、利用LinkedList实现栈Stack,主要有三个方法:peek()\push()\pop()

(1)push表示入栈,在头部添加元素,栈的空间可能是有限的,如果栈满了,push会抛出异常IllegalStateException。

(2)pop表示出栈,返回头部元素,并且从栈中删除,如果栈为空,会抛出异常NoSuchElementException。

(3)peek查看栈头部元素,不修改栈,如果栈为空,返回null。

LinkedList分析(队列和栈的实现方法)

6、总结:

如果是实现的队列,则添加元素需要用add()或者offer()

如果是实现的栈,则添加元素用push()

LinkedList分析(队列和栈的实现方法)

相关文章