首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

队列的基本操作

这一章我们来看队列 队列的概念: 队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。...进行插入操作的端称为队尾,进行删除操作的端称为队头。 其实我们来对比栈,栈的特点是只能在一端进行操作的,而队列是一端插入一端删除。...其实从存储结构上讲,队列也分为两种,一种是顺序队列,一种是链队列。 如果从存储上加以区分的话,在实际的物理空间中,数据集中存储的队列是顺序队列,分散存储的队列是链队列。...我们来看顺序表实现队列的操作 上代码: 我们这样实现就很简单,避免了使用结构体 #include int PushQueue(int *a,int rear,int data){...(Q->rear==Q->font){ return 1; } else { return 0; } } 其他的操作都是大同小异的,注意用到空间申请函数了,我们要加上相应的头文件。

41330
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【数据结构】栈和队列(队列的基本操作和基础知识)

    这是2024年的第一篇博客。 欢迎大家关注点赞收藏⭐️留言 队列 队列的概念和结构 ​ 队列的实现 队列也有数组队列和链式队列。队列的特点是先进先出。实现时,数组队列,不适合头删。...单链表队列的实现 总的声明 typedef int QDataType; typedef struct QueueNode { QDataType val; struct QueueNode* next...函数是有问题的,因为队列的特点是队尾进,队头出。...所以插入时是尾插,单链表不好找队尾,就需要一个指向队尾的指针。因为我们的单链表是不带头节点的, 所以传一级指针也是有问题的。...int QueueSize(Queue* pq) { assert(pq); return pq->size; } 队列的一对一关系 队列的特点是先进先出,与栈不同。

    13410

    队列的基本操作(顺序队列、循环队列、链式队列)

    允许插入的一端称为队尾,允许删除的一端称为队头。 队列的基本操作包括: 初始化队列:InitQueue(Q) 操作前提:Q为未初始化的队列。...---- 顺序队列的基本操作 /*---------------------------------------------------------------- 设立一个队首指针front ,一个队尾指针...---- 循环队列的基本操作 /*---------------------------------------------------------------- 设立一个队首指针front ,一个队尾指针...链式队列的出队和入队的操作可参考下图: ---- **链式队列的基本操作 #include #include #include ...所以相对于顺序队列和循环队列,链式队列没有判断队列是否为满操作。但在清空队列时需要将队列所有结点的空间动态释放,从而防止内存泄露。测试清空函数可以通过编译器调试来观察。

    3.8K50

    【数据结构与算法】7.详解队列的基本操作

    队列 1.1 队列的概念 像栈一样,队列也是表。然而,使用队列是插入在一端进行而删除则在另一端进行。...队列的基本操作的是入队,它是在表的末端(队尾)插入一个元素,和出队,它是删除(并返回)表的开头元素。...1.2 队列的使用 方法 功能 boolean offer(E e) 入队列 E poll() 出队列 peek() 获取队头元素 int size() 获取队列中有效元素个数 boolean isEmpty...,如果为空,将新节点设置为头节点,将新节点设置为尾节点 head = last = node; 如果队列不为空,将最后一个节点last的next域指向新节点,新节点的prev域指向最后一个节点,更新尾节点为新节点...; return val; } 如果队列有多个元素,则移除头元素并返回该元素的值,将头节点指向头节点的下一个节点,将头节点的prev置为空,返回移除元素的值 head = head.next;

    10210

    C语言队列的基本操作

    本篇介绍一下编程中比较重要的一个数据结构队列,队列有个很显著的标志,对其中的数据是先进先出,如果是顺序存储结构可以说就是一个受限的数组,对链式存储结构就只能说是符合先进先出的规则了,这种数据结构在我们真正的编程中还是相当常用的...开始 顺序队列的操作 首先我们来介绍一下顺序存储结构下的队列的定义和基本操作 添加适当的头文件,定义一个顺序存储数据结构, 这里需要添加头文件和定义一个队列的顺序数据结构 #include <stdio.h...i + 1); } for (i = 0; i < 10; i++) { DeleteQueue(&q, &a[i]); printf("%d\n", a[i]); } } 都是很基本的操作...,在顺序队列中,可以从数组的方式去理解,这样将会让你理解起来更简单 链式队列的操作 首先我们来介绍一下顺序存储结构下的队列的定义和基本操作 添加适当的头文件,定义一个队列链式存储数据结构, 这里需要添加头文件和定义一个队列的链式存储数据结构...,只要理解了先进先出的逻辑,和了解一下指针操作就可以很容易的写出队列的节本操作。

    77831

    【数据结构】栈和队列(栈的基本操作和基础知识)

    这是2023年的最后一篇博客啦。 欢迎大家关注点赞收藏⭐️留言 栈 栈的概念和结构 栈的实现 栈有数组栈和链式栈。数据结构没有规定栈的实现要用数组还是链式,根据自身需要选择即可。...因为单链表的头插头删方便。...两种方法都可以使用,这里我们使用初始化top为0的方法。 注意:使用不同的方法,其他操作的实现会略微不同。...可知入栈顺序和出栈顺序是一对多的关系。入栈顺序只有一种,但出栈的顺序是多样的,不过出栈顺序也要符合先出栈顶元素,不是想出啥就出啥 。 不同的栈 栈有两种,一种是数据结构的栈,一种是内存区域的栈。...我们这里的栈是数据结构的栈。而我们所说的栈溢出是指内存区域的栈,在递归中,返回条件出现问题时,容易出现栈溢出。

    11010

    python基础之集合的基本操作

    Python提供了字典和集合这两种数据结构来解决上述问题。这里介绍一下python集合的基本操作相关知识。...---- 二、集合的基本操作 集合(set)与数学中集合的概念一致,即包含0个或多个数据项的无序组合。...集合中的元素不可重复 元素类型只能是固定数据类型,如整数、浮点数、字符串、元组等 不能是列表、字典和集合等可变数据类型   Python提供了一个内置函数hash()来计算对象的哈希值,凡是无法计算哈希值...(调用内置函数hash()时抛出异常)的对象都不能作为集合的元素,也不能作为字典对象的“键”。...---- 五、参考 1、廖雪峰的官网 2、python官网 3、Python编程案例教程 ---- 六、总结   以上就是就是关于python集合的基本操作相关知识,可以参考一下,后面会不断更新相关知识

    25020

    【数据结构初阶】一文详解顺序栈和链队列的基本操作

    目录 1.栈的概念  2.栈的结构  3.实现栈的基本操作 3.1栈的初始化 3.2压栈 3.3出栈 3.4 取栈顶元素 3.5 计算栈内元素个数 3.6栈的判空 3.7栈的销毁 4.源代码 4.1stack.c...4.2stack.h 4.3test.c  4.4效果 1.队列的概念  2.队列的结构  3.实现队列的基本操作 3-1结构体定义 3-2队列的初始化 3-3入队列 3-4出队列 3-5取队头元素...3.实现栈的基本操作 3.1栈的初始化  选择哪一个方式初始化top都可以,但是记得做到和后面的push等做到统一。  ...建议再主函数内判空操作不直接自己if(ps->top==0)等,因为这个内部怎么实现的不一定是初始化为ps->top=0,而是建议调用函数去判空if(StackEmpty(&ST)) void StackInit...出队列就是头删,定义一个头指针  3.实现队列的基本操作 3-1结构体定义 typedef int QDateType; typedef struct QueueNode { struct QueueNode

    32580

    【Kotlin】集合操作 ② ( MutableList 可变列表集合 | 修改 MutableList 集合的 mutator 函数 )

    文章目录 一、MutableList 可变列表集合 二、修改 MutableList 集合的 mutator 函数 1、添加元素运算符 += 和 删除元素运算符 -= 2、通过 Lambda 表达式筛选要删除的元素...一、MutableList 可变列表集合 ---- 使用 listOf 函数 创建的 List 集合 是 只读列表集合 ; 使用 mutableListOf 函数 创建的 MutableList 集合...: MutableList = list.toMutableList() } 执行结果 : [Jerry, Jack] 二、修改 MutableList 集合的 mutator 函数 -...--- 修改 MutableList 集合 的 函数 统称为 mutator 函数 ; 1、添加元素运算符 += 和 删除元素运算符 -= 运算符重载 : MutableList 集合 还有一些 运算符重载...Lambda 表达式筛选要操作的元素 // 删除包含 字母 T 的元素 mutableList.removeIf { it.contains("T") }

    96830

    数据结构--单链表的基本操作

    * next; //指针变量⽤保存下⼀个节点的地址 }; 当我们想要保存⼀个整型数据时,实际是向操作系统申请了⼀块内存,这个内存不仅要保存整型数 据,也需要保存下⼀个节点的地址(当下⼀个节点为空时保存的地址为空...我们把单链表的功能函数全部在头文件里面声明一下,以及我们结构体的定义,还有我们需要用到的头文件都放在.h文件里面。...我们和顺序表一样先来实现尾插,我们插入数据的时候需要申请节点,所以我们先来实现申请节点的函数。...这里我们创建了一个指针变量让它进行找尾的操作,如果用我们的头节点不断往后最后会指向我们的尾节点。 尾插实现好了我们用测试文件来测试一下 text.c 打印怎么实现的我们上面已经说了。...SLTPrint(plist); //销毁链表 SListDesTroy(&plist); } int main() { SListText02(); return 0; } 以上就是单链表的基本操作了

    6600

    Excel VBA解读(150): 数据结构—集合的基本使用

    下图1所示为存储学生分数的工作表,如果使用变量来存储学生的姓名和分数,那会使用很多的变量。 ? 图1 我们可以使用集合来方便地存储这些数据。...下面的代码将学生姓名作为集合元素的键,将相应的成绩作为元素的值: '声明并创建集合 Dim colStudents As New Collection '声明其他变量 Dim lngLast As Long...colYou为ByRef,即传递引用,这意味着在被调过程中对集合的更改,在主调过程中该集合将会同时被修改。...还可以从自定义函数中返回集合,如下面的示例代码: Sub Main() '声明集合变量 Dim colTest As Collection Dim item As Variant...'将函数过程中返回值赋给变量 Set colTest = MyCollection '输出集合元素 For Each item In colTest Debug.Print

    3.5K20

    Java实现基本数据结构(三)——队列

    循环队列的实现 前言   阅读本文前,最好先学习顺序表和栈的基本操作和实现原理,也就是弄清楚数组和栈的原理,点击Java实现基本数据结构(一)——数组,Java实现基本数据结构(二)——栈。...队列简介   在数据结构中,队列和栈(Java实现基本数据结构(二)——栈)类似,也是一种线性表的结构。...图2 出队操作示意 ?             图3 入队操作示意图 初识队列的应用   队列在计算机系统中也是一个应用非常广泛的数据结构。...设计队列的功能   根据队列这种数据结构的特点,在队列的实现上,我们只需要设计以下几个功能即可:   (1)入队(enqueue)操作:将一个元素插入队列中,实际上就是插入数组的尾部。   ...,本节实现的线性存储队列,将不使用JDK提供的ArrayList,使用Java实现基本数据结构(一)——数组中已经实现好的ArrayList类作为队列的存储结构。

    66210

    数据结构与算法(四)| 队列、栈与Java集合

    ---每次操作无论push还是pop均有一个队列是空的。...Java集合框架图(无Map) List集合 List集合元素有明确的 上一个 和 下一个 元素,也存在明确的第一个和最后一个元素。...Queue集合 前面几篇文章一直在探讨队列、栈这些数据结构,队列的**先进先出(FIFO)**应该深入我们的脑海中---队列只允许从一端进行取数,在另一端进行插入数据。...从棣属于juc包下的 BlockingQueue 出现以来,队列就应用于各种高并发场景中,鉴于其先进先出的特性记忆阻塞操作的特点,它经常被用作数据缓冲区。 ?...BlockingQueue 小结 本文介绍了栈和队列的互转,这两个算法技巧可以帮助解决一些奇怪的算法题~ Java中常用的List和Queue集合多和队列和栈数据结构有关系,建议手绘一张集合框架图,时不时的想一下他们的实现

    47640
    领券