java栈与队列如何实现

发布时间:2022-03-19 10:49:02 作者:iii
来源:亿速云 阅读:171

这篇文章主要介绍了java栈与队列如何实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇java栈与队列如何实现文章都会有所收获,下面我们一起来看看吧。

栈与队列

  1. 栈 (Stack)是一种后进先出(last in first off,LIFO)的数据结构

  2. 队列(Queue)则是一种先进先出 (fisrt in first out,FIFO)的结构

栈 (Stack)

栈是一种线性结构,与数组相比,栈对应的操作是数组的子集。

它只能从一端添加元素,也只能从一端取出元素(这一端称之为栈顶)。

Stack这种数据结构用途很广泛,在计算机的使用中,大量的运用了栈,比如编译器中的词法分析器、Java虚拟机、软件中的撤销操作(Undo)、浏览器中的回退操作,编译器中的函数调用实现等等。

栈的实现

接口说明复杂度
void push(E e)向栈中加入元素O(1) 均摊
E pop()弹出栈顶元素O(1) 均摊
E peek()查看栈顶元素O(1)
int getSize()获取栈中元素个数O(1)
boolean isEmpty()判断栈是否为空O(1)

说明:push和pop操作在最后面进行,有可能触发resize,但均摊来算是O(1)的。
如果你想了解更多时间复杂度的分析,欢迎关注笔者后续要更新的文章:O(n)说明的是什么问题?

栈的实现可以通过 数组 或者 链表 实现,在这里我们使用 数组来实现上述接口。

在栈的设计中,用户只关注栈顶元素存取和栈长度,因此设计代码如下:

java栈与队列如何实现

读者可以使用 栈 这种数据结构去解决LeetCode上的第20号问题:有效的括号,也可以查看 每天一算:Valid Parentheses。

队列 Queue

队列也是一种线性数据结构,与数组相比,队列对应的操作是数组的子集。

只能从一端 (队尾) 添加元素,只能从另一端 (队首) 取出元素。

队列的应用可以在播放器上的播放列表,数据流对象,异步的数据传输结构(文件IO,管道通讯,套接字等)上体现,当然最直观的的就是排队了。

队列的实现

接口说明复杂度
void enqueue(E e)入队O(1) 均摊
E dequeue()出队O(n)
E getFront()获取队首元素O(1)
int getSize()获取队列元素个数O(1)
boolean isEmpty()判断队列是否为空O(1)

入队是从队尾开始,有可能触发resize,因此均摊下来是O(1)。出队是在队首,数组实现每次都要挪动所有元素,O(n)。

java栈与队列如何实现

关于“java栈与队列如何实现”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“java栈与队列如何实现”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注亿速云行业资讯频道。

推荐阅读:
  1. 数据结构--栈与队列
  2. c++中栈与队列的实现

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java

上一篇:JavaScript怎么判断是否是字符

下一篇:KEGG数据库pathway注释信息下载的示例分析

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》