首页 > 其他分享 >[数据结构][队列]链表模拟队列操作

[数据结构][队列]链表模拟队列操作

时间:2023-03-20 15:05:30浏览次数:35  
标签:return 队列 LinkQueue next 链表 front QNode 数据结构 rear


#include<iostream>
#include<cstdio>
using namespace std;

#define MAXSIZE 100

typedef int Status;
typedef int Elem;

typedef struct QNode
{
/* data */
Elem data;
struct QNode *next;

}QNode, *QueuePtr;

typedef struct
{
QueuePtr front;
QueuePtr rear;
}LinkQueue;//这种写法让我想起了 定义结构体 然后定义类 在类里放结构体

Status InitQueue(LinkQueue &Q)
{
Q.front = Q.rear = new QNode;
Q.front->next = NULL; //头指针 空

return 1;
}

Status EnQueue_H(LinkQueue &Q, Elem e)
{
QNode *p = new QNode;
p->data = e;
p->next = NULL;

Q.rear->next = p;//队尾的结点指向 新节点p
Q.rear = p;//队尾为p

return 1;
}

Status DeQueue(LinkQueue &Q, Elem &e)
{
if (Q.rear == Q.front) return 0;

QNode *p = Q.front->next;
e = p->data;

Q.front->next = p->next; //其实就是往下走 当删除了

if (Q.rear == p) Q.rear = Q.front; //如果整个没了 那就尾巴指向头

delete p;

return 1;
}

Elem GetHead(LinkQueue &Q)
{
if (Q.front != Q.rear)
return Q.front->next->data;

return 0;
}

int main()
{

LinkQueue Q;

//1
InitQueue(Q);

//1
EnQueue_H(Q, 1);
cout << GetHead(Q);

//1
Elem e = 0;
DeQueue(Q, e);
cout << GetHead(Q);

return 1;
}


标签:return,队列,LinkQueue,next,链表,front,QNode,数据结构,rear
From: https://blog.51cto.com/u_16014765/6132927

相关文章

  • [链表]用静态数组模拟单链表
    来源:模板题算法标签链表题目描述实现一个单链表,链表初始为空,支持三种操作:(1)向链表头插入一个数;(2)删除第k个插入的数后面的数;(3)在第k个插入的数后插入一个数现在要对......
  • [数据结构]有序表的合并
    /**@Author:*@Date:2019-12-0320:18:46*@LastModifiedby:*@LastModifiedtime:2019-12-0320:44:28*/#include<iostream>#include<cstdio>u......
  • 数据结构与算法:二叉树专题
    数据结构与算法:二叉树专题​​前言​​​​前提条件​​​​基础知识​​​​二叉树链式存储结构​​​​二叉树中序遍历​​​​二叉树层序遍历​​​​常见编程题​​​​......
  • Java开发 - 消息队列之Kafka初体验
    目录​​前言​​​​Kafka​​​​什么是Kafka​​​​Kafka软件结构​​​​Kafka的特点​​​​怎么启动Kafka​​​​下载Kafka​​​​配置Kafka ​​​​Zookeeper​......
  • .NET 中RabbitMQ消息队列的使用
    一、安装RabbitMQ1.下载安装包1)安装RabbitMQ需要依赖erlang语言环境,所以需要我们下载erlang的环境安装程序。1)erlang环境安装程序下载路径:https......
  • 链表
    链表的概述链表是由一个一个的节点组成,节点没有名字,每个节点从堆区空间动态申请,节点间是非连续的(物理上),但是每个节点通过指针域保存下一个节点的位置,达到逻辑上的连续......
  • 【项目实战典型案例】16.消息队列作用和意义
    目录​​一:背景介绍​​​​二:消息队列​​​​消息队列简介​​​​解耦​​​​异步​​​​流量削峰​​​​原理​​​​1.ArrayBockingQueue:​​​​2.Socket​​​​3......
  • 【C 数据结构】循环队列
    循环队列预先分配好数组空间#defineBUFFER_SIZE1024//在栈区分配空间intbuf[N];//在堆区分配空间int*buf;buf=(int*)malloc(BUFFER_SIZE*sizeof(int))......
  • 【VTK学习笔记】VTK基本数据结构_3.2数据对象和数据集
    任务:把几何结构和拓扑结构加入到数据集中1.无拓扑结构1#include<vtkSmartPointer.h>2#include<vtkPoints.h>//几何结构3#include<vtkPolyData.h>//数据集......
  • 数据结构-图
    1.图的概念基础概念顶点集合(vex-set):如上图S(vex)=边集合(arc-set):如上图S(arc)=度(degree):⽆向图中从⼀个点延伸出去的边数就是该点的度;有向图中包含出度和⼊......