• 【数据结构基础】——队列、栈


    1、先入先出的数据结构 —— 栈

      1.1、定义及基本操作

                               

        在FIFO数据结构中,将首先处理添加到队列中的第一个元素。如上图所示,队列是典型的FIFO数据结构。插入(insert)操作也成为入队(enqueue),新元素始终被添加在队列的末尾。删除(delete)也被称为出队(dequeue),你只能移除第一个元素

            新元素6的入队操作如下:

              

              第一个元素元素5出队操作如下:

                       

      1.2、实现

        为了实现队列,我们可以使用动态数组和指向队列头部的索引。

        如上所述,队列应支持两种操作:入队和出队。入队会向队列追加一个新元素,而出队会删除第一个元素。 所以我们需要一个索引来指出起点。

        这是一个供你参考的实现:

     1 // "static void main" must be defined in a public class.
     2 
     3 class MyQueue {
     4     // store elements
     5     private List<Integer> data;         
     6     // a pointer to indicate the start position
     7     private int p_start;            
     8     public MyQueue() {
     9         data = new ArrayList<Integer>();
    10         p_start = 0;
    11     }
    12     /** Insert an element into the queue. Return true if the operation is successful. */
    13     public boolean enQueue(int x) {
    14         data.add(x);
    15         return true;
    16     };    
    17     /** Delete an element from the queue. Return true if the operation is successful. */
    18     public boolean deQueue() {
    19         if (isEmpty() == true) {
    20             return false;
    21         }
    22         p_start++;
    23         return true;
    24     }
    25     /** Get the front item from the queue. */
    26     public int Front() {
    27         return data.get(p_start);
    28     }
    29     /** Checks whether the queue is empty or not. */
    30     public boolean isEmpty() {
    31         return p_start >= data.size();
    32     }     
    33 };
    34 
    35 public class Main {
    36     public static void main(String[] args) {
    37         MyQueue q = new MyQueue();
    38         q.enQueue(5);
    39         q.enQueue(3);
    40         if (q.isEmpty() == false) {
    41             System.out.println(q.Front());
    42         }
    43         q.deQueue();
    44         if (q.isEmpty() == false) {
    45             System.out.println(q.Front());
    46         }
    47         q.deQueue();
    48         if (q.isEmpty() == false) {
    49             System.out.println(q.Front());
    50         }
    51     }
    52 }
  • 相关阅读:
    ArcMap影像纠偏
    关于ArcGIS动态图层空间内栅格数据,JS前端显示颜色不正确的解决方案
    发布镶嵌数据集,服务端Raster Function制作
    ARCGIS 发布TIF,金字塔文件是否Server自动生成。
    验证航行数据
    解决PLSQL Developer 插入中文 乱码问题
    ArcGIS发布动态空间,并验证
    老丫么老毛桃
    使用IIS建立主机到虚拟机的端口转发
    最大子序列求和算法二三
  • 原文地址:https://www.cnblogs.com/ouhouki/p/10830472.html
Copyright © 2020-2023  润新知