首页 > 其他分享 >循环队列入队出队

循环队列入队出队

时间:2024-09-27 10:47:43浏览次数:12  
标签:列入 return seq 队列 SeqQueue DataType 出队 squeue 循环

队列

  • 队列特性: 先进先出限定 插入 操作只能在 队尾 进行,而 删除操作只能在队头进行。
  • 循环队列:一种线性数据结构,其操作表现基于 先进先出 ,队尾被连接在队首之后以形成一个循环。
  • 循环队列的操作与普通队列类似,但又有独特的优点
  • 下面给出一些循环队列的操作函数:队列创建入队、队列出队

#include <stdio.h>
#include <stdlib.h>
typedef char DataType;
struct Queue//结构体定义
{
    int Max;  
    int f;   //首指针
    int r;  尾指针
    DataType *elem; //数据指针
};
typedef struct Queue *SeqQueue;

SeqQueue SetNullQueue_seq(int m) //创建空队列
{
    SeqQueue squeue;
    squeue = (SeqQueue)malloc(sizeof(struct Queue));
    if (squeue == NULL)
    {
        printf("Alloc failure\n");
        return NULL;
    }
    squeue->elem = (char*)malloc(sizeof(DataType)*m);
    if (squeue->elem != NULL)
    {
        squeue->Max = m;
        squeue->f = 0;
        squeue->r = 0;
        return squeue;
    }
}

int IsNullQueue_seq(SeqQueue squeue) //队列判空
{
    return (squeue->f == squeue->r);
}
void EnQueue_seq(SeqQueue squeue, DataType x)  //队列的入队操作
{
    @@
}
void DeQueue_seq(SeqQueue squeue)  //队列的出队操作
{
    @@
}
DataType FrontQueue_seq(SeqQueue squeue) //取队头节点函数
{
    @@
}

int main()
{
    char ch;
    SeqQueue queueA = SetNullQueue_seq(5);
    ch = getchar();
    while (ch != '#')
    {
        EnQueue_seq(queueA, ch);
        ch = getchar();
    }
    DeQueue_seq(queueA);
    printf("%c" ,FrontQueue_seq(queueA));
    return 0;
}

下面给出入队出队以及取队头的函数实现

- 入队函数:
squeue 是操作的队列,x是入队的元素

 - `void EnQueue_seq(SeqQueue squeue, DataType x) 
{
    if ((squeue->r + 1) % squeue->Max != squeue->f) //队列未满
    {
        squeue->elem[squeue->r] = x;
        squeue->r = (squeue->r + 1) % squeue->Max;//循环数组使用,移动尾指针
    }
    else 
    {
        printf("It is FULL Queue!");//队列满了
        return 0;
    }
}

出队函数

void DeQueue_seq(SeqQueue squeue)
{
    if(!IsNullQueue_seq(squeue))//判断队列是否为空
        squeue->f=(squeue->f+1)%squeue->Max;//移动首指针
    else
    {
       printf("It is empty queue!");
    }
}

取队头函数

DataType FrontQueue_seq(SeqQueue squeue)
{
    if (!IsNullQueue_seq(squeue)) 
    { // 判断队列是否为空
        return squeue->elem[squeue->f];
    } 
    else 
    {
        printf("It is empty queue!");
        return '\0'; // 返回空字符
    }
}

输入样例: ABCD#
输出样例: B

`在这里插入图片描述

输入样例: ABCDEF#
输出样例: It is FULL Queue!It is FULL Queue!B

在这里插入图片描述

谢谢支持点赞₍˄·͈༝·͈˄*₎◞ ̑̑

标签:列入,return,seq,队列,SeqQueue,DataType,出队,squeue,循环
From: https://blog.csdn.net/FFNCL/article/details/142579313

相关文章

  • ERROR:start workflow error,dolphinscheduler log重复刷屏(死循环)直至磁盘存满
    在使用ds过后发现,我虚拟机中的磁盘内存全部沾满了查看目录下大于100M的文件:find/-size+100M查看后发现问题在于ds产生的日志文件特别大而且多,查看日志后发现日志中一直都在死循环错误:startworkflowerror 等其中文件下的目录可以直接全部删除:cd /opt/install......
  • 初学Java基础Day07---while循环,do-while循环,特殊流程孔子语句,Java循环习题
    一,while循环1.语法结构:while(表达式){....代码块/循环体.....}2.理解:        表达式的结果必须是boolean类型,true---执行代码块,false--跳出循环体3.案例//案例:用while循环,打印五遍HelloWorldinti=1;while(i<=5){System.out.println("HelloWorld");......
  • 迭代语句即for-of循环
    for-of:在es6中引入通常循环有计数器、检查条件、更新计数器。for-of循??环没有这样的东西。continue-break两者都可以搭配使用。旨在为我们提供当前元素。fruits=['banana','apple','peach','orange','mango','guava','water-melon'];for(constitemo......
  • 掌握循环的艺术:通过实际示例理解 For、While 和 Do While 结构
    循环是计算机编程中的一项基本且非常重要的功能,在每种编程语言中都发挥着同样重要的作用。循环主要分为三种类型:1.for2.while3.dowhile。我们先来了解一下什么是循环。循环是一种根据指定条件重复执行代码块的结构。您可能想知道,“如果循环可以达到此目的,为什么我们需要三种......
  • dowhile循环的应用及案例
          //while(条件){满足条件执行的代码,循环体}      /*       do做       */      //while(false)      //{      //  Console.WriteLine("while循环执行了"); ......
  • CREKA肽修饰载药脂质体liposomes 主动靶向长循环脂质体,脂质体载药定制服务
    产品名称:靶向肿瘤细胞(CREKA)长循环载药脂质体定制英文名称:Targetedlong-circulatingdrugloadingliposomecoatedwithCREKApeptide目 录 号:ML-定制产品说明: 靶向肿瘤细胞的CREKA长循环载药脂质体是一种将特异性肽(CREKA)与长循环脂质体结合的药物递送系统,旨在通过提高......
  • 将一个表中的数据循环插入另外一个表中的mysql的存储过程
    DELIMITER$$CREATEPROCEDUREInsertDataIntoSysDictData()BEGIN--声明变量DECLAREdoneINTDEFAULTFALSE;DECLAREattribute_nameVARCHAR(255);DECLAREapply_modeVARCHAR(255); DECLAREcounter1INTDEFAULT0;--游标声明DECLAREc......
  • 20240924_102514 c语言 循环练习题
    ......
  • RabbitMQ(兔子队列入门/消息队列)
    介绍(本笔记不涉及RabbitMQ的环境搭建,主要用于了解和上手使用RabbitMQ)RabbitMQ是一种消息队列,什么是消息队列?消息(Message):是指在应用之间传送的数据,消息可以非常简单,比如只包含文本字符串,也可以更复杂,可能包含嵌入对象。**队列:**可以说是一个数据结构,可以存储数据,如下图,我们从右侧(队......
  • Leetcode 622. 设计循环队列
    1.题目基本信息1.1.题目描述设计你的循环队列实现。循环队列是一种线性数据结构,其操作表现基于FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。循环队列的一个好处是我们可以利用这个队列之前用过的空间。在一个普通队列里,一旦一个队列......