zoukankan      html  css  js  c++  java
  • 队列Queue和栈

    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}

    }

  • 相关阅读:
    LeetCode题解之Flipping an Image
    LeetCode 之Find Minimum in Rotated Sorted Array
    LeetCode题解Transpose Matrix
    LeetCode 题解之Minimum Index Sum of Two Lists
    LeetCode题解之Intersection of Two Linked Lists
    LeetCode 题解之Add Two Numbers II
    LeetCode题解之Add two numbers
    href="#"与href="javascript:void(0)"的区别
    有关ie9 以下不支持placeholder属性以及获得焦点placeholder的移除
    ie7下属性书写不规范造成的easyui 弹窗布局紊乱
  • 原文地址:https://www.cnblogs.com/sunfenqing/p/7460428.html
Copyright © 2011-2022 走看看