首页
学习
活动
专区
工具
TVP
发布

刷leetcode时,重新认识LinkedList实现栈、队列或者双端队列

如果想进大厂免不了要leetcode,而leetcode时免不了很多题跟栈,队列有关,重新认识一下LinkedList也许能在不时之需时,助你进入大厂。LinkedList实现了Deque和Queue接口,可以按照队列、栈和双端队列的方式进行操作。

0x01:Queue接口

Queue里面的方法,Queue扩展了Collection,它的主要操作有三个功能操作。每个操作有2个方法,针对队列长度是否受限制,对应是否抛异常。有些队列的是有长度限制的,本例的LinkedList实现queue没长度限制。

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

查看头部元素 (element, peek):返回头部元素,但不改变队列。element()会在没元素时抛出NoSuchElementException异常,而peek()返回null;

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

LinkedList模拟队列

0x02:Deque接口

Java中有一个类Stack,用于表示栈,但该类已经过时了。Java中没有单独的栈接口,栈相关方法包括在了表示双端队列的接口Deque中,主要有三个方法。

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

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

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

栈和队列只是双端队列的特殊情况,它们的方法都可以使用双端队列的方法替代,使用不同的名称和方法,概念上更为清晰。具体参考Deque接口里面的方法。

LinkedList模拟栈

喜欢,在看

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20210127A0FZQD00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券