返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++数据结构的队列详解
  • 293
分享到

C++数据结构的队列详解

2024-04-02 19:04:59 293人浏览 独家记忆
摘要

目录前言1.队列的概念及结构2.队列的实现2.1queue.h2.2queue.c2.3test.c总结前言 hello,大家好,这期文章我们来分享数据结构关于队列的知识。希望对大家

前言

hello,大家好,这期文章我们来分享数据结构关于队列的知识。希望对大家有所帮助,闲言少叙,现在开始。

1. 队列的概念及结构

队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out) 入队列:进行插入操作的一端称为队尾 出队列:进行删除操作的一端称为队头

在这里插入图片描述

在这里插入图片描述

2. 队列的实现

2.1 queue.h


#include<stdio.h>
#include<stdbool.h>
#include<assert.h>
#include<malloc.h>
typedef int QDataType;
typedef struct Queuenode
{
	struct QueueNode*next;
	QDataType data;
}QueueNode;
typedef struct Queue
{
	QueueNode *head;
	QueueNode *tail;
}Queue;
void QueueInit(Queue *pq);
void QueueDestory(Queue *pq);
void QueuePush(Queue *pq,QDataType x);
void QueuePop(Queue *pq);
QDataType QueueFront(Queue *pq);
QDataType QueueBack(Queue *pq);
bool QueueEmpty(Queue *pq);
int QueueSize(Queue *pq);

2.2 queue.c


#include"queue.h"
void QueueInit(Queue *pq)
{
	assert(pq);
	pq->head = pq->tail = NULL;
}
void QueueDestory(Queue *pq)
{
	assert(pq);
	QueueNode *cur = pq->head;
	while (cur)
	{
		QueueNode *next = cur->next;
		free(cur);
		cur = next;
	}
	pq->head = pq->tail = NULL;
}
void QueuePush(Queue *pq, QDataType x)
{
	assert(pq);
	QueueNode *newnode = (QueueNode*)malloc(sizeof(QueueNode));
	if (newnode == NULL)
	{
		printf("malloc fail\n");
		exit(-1);
	}
	newnode->data = x;
	newnode->next = NULL;
	if (pq->tail == NULL)
	{
		pq->head = pq->tail = newnode;
	}
	else
	{
		pq->tail->next = newnode;
		pq->tail = newnode;
	}
}
void QueuePop(Queue *pq)
{
	assert(pq);
	assert(!QueueEmpty(pq));
	if (pq->head->next == NULL)
	{
		free(pq->head);
		pq->head = pq->tail = NULL;
	}
	else
	{
		QueueNode *next = pq->head->next;
		free(pq->head);
		pq->head = next;
	}
}
QDataType QueueFront(Queue *pq)
{
	assert(pq);
	assert(!QueueEmpty(pq));
	return pq->head->data;
}
QDataType QueueBack(Queue *pq)
{
	assert(pq);
	assert(!QueueEmpty(pq));
	return pq->tail->data;
}
bool QueueEmpty(Queue *pq)
{
	assert(pq);
	return pq->head == NULL;
}
int QueueSize(Queue *pq)
{
	int size = 0;
	QueueNode *cur = pq->head;
	while (cur)
	{
		QueueNode *next = cur->next;
		++size;
		cur = cur->next;
	}
	return size;
}

2.3 test.c


#include"queue.h"
void TestOne()
{
	Queue q;
	QueueInit(&q);
	QueuePush(&q, 1);
	QueuePush(&q, 2);
	QueuePush(&q, 3);
	QueuePush(&q, 4);
	while (!QueueEmpty(&q))
	{
		printf("%d  ", QueueFront(&q));
		QueuePop(&q);
	}
	printf("\n");
	QueueDestory(&q);
}
int main()
{
	TestOne();
	return 0;
}

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容!

--结束END--

本文标题: C++数据结构的队列详解

本文链接: https://lsjlt.com/news/157469.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C++数据结构的队列详解
    目录前言1.队列的概念及结构2.队列的实现2.1queue.h2.2queue.c2.3test.c总结前言 hello,大家好,这期文章我们来分享数据结构关于队列的知识。希望对大家...
    99+
    2024-04-02
  • JavaScript队列数据结构详解
    目录什么是队列?JavaScript中的队列JavaScript中的应用场景最近的请求次数补充总结写在前面: 在上一篇文章中介绍了栈这个数据结构,这篇文章介绍一下队列。 什么是队列?...
    99+
    2024-04-02
  • JS数据结构之队列结构详解
    目录一.认识队列二.队列的应用三.队列类的创建四.队列的常见操作五.击鼓传花六.优先级队列七.优先级队列的实现一.认识队列 受限的线性结构: 我们已经学习了一种受限的线性结构:栈结构...
    99+
    2022-11-13
    JS队列结构 JS队列 JS 数据结构
  • Python数据结构之队列详解
    目录0. 学习目标1. 队列的基本概念1.1 队列的基本概念1.2 队列抽象数据类型1.3 队列的应用场景2. 队列的实现2.1 顺序队列的实现2.2 链队列的实现2.3 队列的不同...
    99+
    2024-04-02
  • C语言数据结构之队列算法详解
    目录一、前言二、基本概念三、顺序队列四、链队列五、循环队列六、总结与提高一、前言 队列在程序设计中经常出现,如:操作系统中的排队问题。 这篇文章主要介绍了队列的...
    99+
    2024-04-02
  • 详解python数据结构之队列Queue
    目录一、前言二、Queue的基本格式三、入队列函数 en_queue四、删除数据函数 de_queue一、前言 队列Queue是一种先进先出(FIFO,First In First ...
    99+
    2024-04-02
  • Java 数据结构之队列(Queue)详解
    目录 1、在Java中有哪些常见的队列? 2、Queue 接口分析 3、Deque 接口分析 4、PriorityQueue 的实现原理详解 5、使用Java数组实现队列的简单示例 1、在Java中有哪些常见的队列?         在...
    99+
    2023-10-12
    java 队列 Queue 接口 Deque 接口
  • JS数据结构与算法中的队列结构详解
    目录队列结构一.认识队列二.队列的应用三.队列类的创建四.队列的常见操作五.击鼓传花六.优先级队列七.优先级队列的实现队列结构 一.认识队列 受限的线性结构:我们已经学习了一种受限的...
    99+
    2022-11-13
    JS数据结构与算法 JS队列结构
  • java实现队列queue数据结构详解
    目录概念队列中两个主要操作队列遵循以下条件:队列的数组实现总结概念 队列是一种非原始(特殊)的线性表,是一种先进先出(FIFO)的数据结构。它只允许在表的前端(front)进行删除操...
    99+
    2024-04-02
  • Javascript数据结构之栈和队列详解
    目录前言栈(stack)栈实现解决实际问题栈的另外应用简单队列(Queue)队列实现队列应用 - 树的广度优先搜索(breadth-first search,BFS)优先队列优先队列...
    99+
    2024-04-02
  • 数据结构:栈和队列(详细讲解)
    🎇🎇🎇作者: @小鱼不会骑车 🎆🎆🎆专栏: 《数据结构》 🎓🎓...
    99+
    2023-09-14
    数据结构 java 算法
  • 数据结构TypeScript之栈和队列详解
    目录栈结构特点出栈和入栈面向对象方法封装栈队列结构特点出队和入队面向对象方法封装队列栈结构特点 栈是线性表的其中一种,用于存储固定顺序的元素,元素增删具有先进后出的特点。 出栈和入...
    99+
    2023-01-30
    TypeScript数据结构栈队列 TypeScript数据结构
  • C语言数据结构系列队列篇
    目录一、队列(Queue)0x00 队列的概念0x01 队列的结构二、队列的定义0x00 链式队列0x02 接口函数三、队列的实现0x...
    99+
    2024-04-02
  • c语言数据结构之栈和队列详解(Stack&Queue)
    目录简介栈一、栈的基本概念1、栈的定义2、栈的常见基本操作二、栈的顺序存储结构1、栈的顺序存储2、顺序栈的基本算法3、共享栈(两栈共享空间)三、栈的链式存储结构1、链栈2、链栈的基本...
    99+
    2024-04-02
  • 数据结构(三):队列
    队列:先入先出(FIFO)表。 常用操作: Enqueue:入队,即将数据写入队列末尾 Dequeue:出队,即将队列开头的元素从队列中删除并返回 应用场景:   队列通常用来实现消息(任务)的快速读写,即消息队列。消息队列的常用来解...
    99+
    2023-01-31
    数据结构 队列
  • Java数据结构之堆(优先队列)详解
    目录堆的性质堆的分类堆的向下调整堆的建立堆得向上调整堆的常用操作入队列出队列获取队首元素TopK 问题例子数组排序堆的性质 堆逻辑上是一棵完全二叉树,堆物理上是保存在数组中 。 总...
    99+
    2024-04-02
  • C语言数据结构与算法之队列的实现详解
    目录队列的概念及结构队列的实现Queue.hQueue.cTest.c队列的概念及结构 队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FI...
    99+
    2022-11-13
    C语言数据结构 队列 C语言 队列实现 C语言 队列
  • C语言数据结构不挂科指南之队列详解
    目录队列队列基本概念循环队列顺序队列的 C 语言实现链式队列的 C 语言实现自考要点队列 这篇博客主要介绍一下队列的概念,并且采用 C 语言,编写两种存储实现方式:顺序存储和链式存储...
    99+
    2024-04-02
  • Python的数据结构与算法的队列详解(3)
    目录模拟打印机任务队列过程主要模拟步骤:​构建队列程序模拟打印程序模拟打印过程(有注释)总结模拟打印机任务队列过程 计算机科学中也有众多的队列例子。比如计算机实验室有10台计算机,它...
    99+
    2024-04-02
  • 【数据结构】队列的实现
    文章目录 (一)队列定义(二)队列实现(1)创建结构体(2)具体函数实现及解析1.1 初始化队列1.2入队列1.3出队列1.4取队首元素1.5取队尾元素1.6返回队列个数1.7判断是否为空1....
    99+
    2023-09-17
    数据结构 java 链表 算法 开发语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作