zoukankan      html  css  js  c++  java
  • 数据结构之栈和队列

    栈和队列是特殊的线性表。

    栈:只允许数据在一个端进行增加和删除操作,存在先进先出的原则。

    插入元素为进栈,从栈顶删除元素为出栈。栈最底部元素为栈顶元素,栈顶部元素为栈顶元素。

    栈只允许在栈顶进行增加和删除元素的操作。

    先入栈的元素位于栈底,后入位于栈顶。

    可以采用数组的形式来实现栈。栈是受限制的线性表,只允许在栈顶进行元素的删除,插入操作。

    链栈:

    前一个元素的next指向原来位于栈顶的元素,由此类推,直到栈底。

    入栈操作:

    出栈操作:

    java里面的栈实现:

    Stack,基于数组的顺序栈实现,线程安全。

    LinkedList:既是双线链表结构,同样也有栈的操作,是栈的链式实现,线程不安全。

    队列:

    指定数据的进入方向和出去的方向,队列中的数据总是先进来的先出去。

    队列只允许在前端删除元素,在后端插入元素。

    循环队列:

    首尾相连的队列,最后个元素下一个为第一个元素。

    队列的链式存储结构以及实现:

    插入队列:

    移除队列:

    java集合中的队列:

    JDK 1.5后 queue接口代表一个队列,提供插入,移除,访问的方法。

    ArrayBlockingQueue,LinkedBlockingQueue,PriorityQueue,ConcurrentLinkedQueue,SynchronusQueue.

    ArrayBlockingQueue,LinkedBlockingQueue,ConcurrentLinkedQueue线程安全。

    双向队列:

    可在队列的两边进行删除和插入元素的操作。

    双向队列就是队列和栈的一种特殊线性表。

    还没写完,等待明天接着写,困了,先睡觉

  • 相关阅读:
    mybatis源码(八) Mybatis中的#{} 和${} 占位符的区别
    mybatis源码(七)mybatis动态sql的解析过程下篇
    mybatis源码(六)mybatis动态sql的解析过程上篇
    JDBC的API介绍
    mybatis源码(五)mybatis日志实现
    jmeter: 报错锦集
    python3升级后pip提示TLS/SSL错误问题
    Pytest+Jenkins+Allure
    建议
    Android Studio Button事件的三种方式
  • 原文地址:https://www.cnblogs.com/androidsuperman/p/5428929.html
Copyright © 2011-2022 走看看