首页 > 其他分享 >线性表之队列

线性表之队列

时间:2023-01-25 21:22:32浏览次数:51  
标签:Node 结点 struct 队列 PtrQ front 线性表

目录

什么是队列

大众化

  • 最常见的队列就是排队
  • 假设超市送鸡蛋
  • 大伙去排队领鸡蛋
  • 先来的先领,后来的后领
  • 这就是队列
  • 先来先服务,先进先出

专业性

  • 只能在一端插入,而在另一端删除
  • 具有一定操作约束的线性表

队列的操作集

  • 生成长度为MaxSize的空队列
  • 判断队列Q是否已满
  • 将数据元素item插入队列Q中
  • 判断队列Q是否为空
  • 删除并返回队头数据元素

队列的链式存储实现

链表结构体初始化

struct Node{
ElementType Data;
struct SNode *Next;
};
struct QNode {	//链队列结构
struct Node* rear;	//指向队尾结点
struct Node* front;	//指向对头结点
//这样就不用每次用的时候都遍历一回了,nice~
};
typedef struct QNode *Queue;
Queue PtrQ;

删除并返回队头数据元素

ElementType DeleteQ(Queue PtrQ)
{
struct Node* FrontCell;
ElementType FrontElem;
//判断队列是否为空
if (PtrQ->front == NULL)
{
	printf("队列空");
	return NULL;
}
FrontCell = PtrQ->front;
//如果队列只有一个元素
if (PtrQ->front == PtrQ->rear)
{
	//删除后队列置为空
	PtrQ->front = PtrQ->rear = NULL;
}
else
{
	//使得次结点变为头结点
	PtrQ->front = PtrQ->front->Next;
}
FrontElem = FrontCell->Data;
free(FrontCell);
//返回头结点元素
return FrontElem;
}

其他操作

大部分操作都跟堆栈是相似的,就是思路不一样而已

标签:Node,结点,struct,队列,PtrQ,front,线性表
From: https://www.cnblogs.com/aduiduidui/p/17032068.html

相关文章

  • 代码随想录算法训练营day10 | leetcode 232.用栈实现队列 225. 用队列实现栈
    基础知识使用ArrayDeque实现栈和队列stackpushpoppeekisEmpty()size()queueofferpollpeekisEmpty()size()LeetCode232.用栈实现队列分析1.0队列先进先出......
  • 用消息队列制作一款多人在线游戏
    本文首发:我用消息队列做了个联机游戏-----------上篇文章我讲了两种常用的随机算法,本文就把这些算法运用出来,做一个多人在线小游戏。我小时候特别喜欢在4399玩一款叫......
  • 【算法】单调栈 & 单调队列学习笔记
    1.单调栈简介1.1前言今天是2023/1/15,一中寒假集训阶段性的结束了。集训的学习笔记可以在本人blogs的【算法】标签栏中找。马上就要过年了,提前祝大家新年快乐!1.2......
  • 【队列】LeetCode 281. 锯齿迭代器
    题目链接281.锯齿迭代器思路使用队列进行保存代码publicclassZigzagIterator{Queue<Iterator<Integer>>queue=newLinkedList<>();publicZigzagIt......
  • 【队列】LeetCode 346. 数据流中的移动平均值
    题目链接346.数据流中的移动平均值思路队列设计基础题代码classMovingAverage{privateIntegercurrentSum=0;privateQueue<Integer>queue=newLi......
  • [数据结构] 队列 (C语言)
    队列队列基本概念队列(queue)是一种特殊的线性表结构,只从队尾插入新的元素,并且只从队首弹出元素。一般将队尾称为rear,队首称为front。队列基本操作(1)入队:从队尾re......
  • 代码随想录算法训练营第十天 栈与队列 | 232.用栈实现队列 | 225. 用队列实现栈
    栈与队列栈:先进后出(叠起来的盘子Stack)队列:先进先出(现实中排队Queue)三个版本的STLHPSTL,其他STL的蓝本,开源P.J.PlaugerSTL,被VisualC++采用,不开源SGISTL,被Lin......
  • 进程+线程+队列爬取斗图网
    需求:爬取斗图网数据首先我们使用线程的方式,爬取前4页数据准备工作图片链接存在页面源代码中但是,界面使用了懒加载技术,真正的url在data-original中importrequ......
  • 单调队列详解
    简介单调栈和单调队列都是思维难度比较大的数据结构,但只要想明白了就会觉得很简单。要理解单调队列,首先得明白“单调”是指它存储的内容单调,而不是指它简单。实现模板......
  • 一文搞定大数据消息队列Kafka
    文章目录​​1.JMS+AMQP核心知识​​​​1.1.什么是MQ中间件​​​​1.2.使用场景​​​​1.3.JMS消息服务和和常见核心概念​​​​2.分布式流处平台Kafka核心概念​​​​......