博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
队列Queue和栈
阅读量:5337 次
发布时间:2019-06-15

本文共 1182 字,大约阅读时间需要 3 分钟。

1、队列Queue是常用的数据结构,可以将队列看成特殊的线性表,队列限制了对线性表的访问方式,只能从线性表的一段添加(offer)元素,

      从另一段取出(poll)元素,队列遵循先进先出的原则。

2、JDK中提供了Queue接口,同时使得LinkList实现了该接口,选择LinkList实现Queue的原因是Queue经常要进行添加和删除的操作 ,而LinkList在这方面效率较高。

3、Queue接口的主要方法:

      1)boolean offer(E  e) 将一个对象添加至队尾,如果添加成功则返回true。

      2)E  poll  从对首返回一个元素,并删除此元素。

      3)E  peek  返回一个元素(但并不删除此元素)

                          public void testQueue() {

                          Queue<String> queue = new LinkedList<String>();

                           queue.offer("a");

                            queue.offer("b");

                            queue.offer("c");

                           System.out.println(queue); // [a, b, c]

                           String str = queue.peek();

                            System.out.println(str); // a

                            while (queue.size() > 0) {

                             str = queue.poll();

                            System.out.print(str + " "); // a b c}}

4、Deque是Queue的子接口,定义了所谓的双端队列,即从队列的两端分别可以入队(offer)和出队(poll),LinkList实现了该接口,

     如果将Deque限制为只能从一端入队和出队,则可实现 栈(Stack)的数据结构,对于栈而言,入栈称之为push,出栈称之为pop,栈遵循先进后出的原则。

     使用Deque提供的peek方法,可以查看栈顶元素,并查看栈顶元素。

                      public void testStack() {

                      Deque<String> stack = new LinkedList<String>();

                      stack.push("a");

                      stack.push("b");

                      stack.push("c");

                      System.out.println(stack); // [c, b, a]

                      String str = stack.peek();

                       System.out.println(str); // c

                      //循环删除栈顶元素

                       while (stack.size() > 0) {

                        str = stack.pop();

                        System.out.print(str + " "); // c b a}

}

转载于:https://www.cnblogs.com/sunfenqing/p/7460428.html

你可能感兴趣的文章
IOS开发学习笔记026-UITableView的使用
查看>>
[转载]电脑小绝技
查看>>
windos系统定时执行批处理文件(bat文件)
查看>>
thinkphp如何实现伪静态
查看>>
BZOJ 2243: [SDOI2011]染色( 树链剖分 )
查看>>
BZOJ 1925: [Sdoi2010]地精部落( dp )
查看>>
c++中的string常用函数用法总结!
查看>>
界面交互之支付宝生活圈pk微信朋友圈
查看>>
[DLX精确覆盖+打表] hdu 2518 Dominoes
查看>>
SuperMap iServerJava 6R扩展领域开发及压力测试---判断点在那个面内(1)
查看>>
Week03-面向对象入门
查看>>
一个控制台程序,模拟机器人对话
查看>>
web.xml 中加载顺序
查看>>
pycharm激活地址
查看>>
hdu 1207 四柱汉诺塔
查看>>
Vue 2.x + Webpack 3.x + Nodejs 多页面项目框架(上篇——纯前端多页面)
查看>>
display:none与visible:hidden的区别
查看>>
我的PHP学习之路
查看>>
【题解】luogu p2340 奶牛会展
查看>>
对PostgreSQL的 SPI_prepare 的理解。
查看>>