• C++队列和链表


    1、什么是队列【queue】

    队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。

    关于队列的基本操作方法:

    add():添加一个元素,若超出了度列的长度会直接抛出异常。

    put():添加一个元素,若向队尾添加元素的时候发现队列已经满了会发生阻塞一直等待空间,以加入元素。

    offer():添加一个元素,如果在添加时发现队列已满无法添加的话,则返回false。

    take():移除并返回这个元素,若队列为空,则发生阻塞,等待有元素。有点类似于生产者消费者模型,只有元素的时候take才被唤醒

    poll():移除并返回这个元素,若队列为空,返回null。

    remove():移除并返回这个元素,若队列为空,抛出NoSuchElementException异常。

    element():返回队列的头部元素,若队列为空,则抛出NoSuchElementException异常。

    peek():返回队列头部元素,若队列为空,则返回null

    2、什么是链表【forward_list,list..】

    链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。

    链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储元素的数据,另一个就是指向下一个节点的指针

    特点:

    相比于线性表顺序结构,操作复杂。由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比另一种线性表顺序表快得多

    但是查找一个节点或者访问特定编号的节点则需要O(n)的时间,而线性表和顺序表相应的时间复杂度分别是O(logn)和O(1)。

    使用链表结构可以克服数组链表需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。

    但是链表失去了数组随机读取的优点,同时链表由于增加了结点的指针,空间开销比较大。

    链表最明显的好处就是,常规数组排列关联项目的方式可能不同于这些数据项目在记忆体或磁盘上顺序,数据的存取往往要在不同的排列顺序中转换。

    链表允许插入和移除表上任意位置上的节点,但是不允许随机存取。链表有很多种不同的类型:

    单向链表,双向链表以及循环链表。链表可以在多种编程语言中实现。如c+,java等


    原文:https://blog.csdn.net/lidai352710967/article/details/81119047

  • 相关阅读:
    bootstrutp module 显示隐藏 模态框
    手机app传统邀请码安装与免邀请码安装区别,如何选择呢?
    好用的一些开源系统
    一个搞笑的招聘启事
    java和android及IOS对接RSA加密经验
    mysql大数据表改表结构方案
    android开发中监控android软件网络请求的软件Charles使用入门
    android IOC框架学习记录
    java分布式事务
    十八届三中全会的综合改革方案将涉及哪些内容?(转自知乎)
  • 原文地址:https://www.cnblogs.com/judes/p/11013330.html
Copyright © 2020-2023  润新知