循环队列的实现

循环队列的实现

大家好,又见面了,我是全栈君。

//头文件queue.h
#pragma once
#include<assert.h>
#include<iostream>
using namespace std;
typedef int ElemType;
#define MAX_SIZE 8
typedef struct Queue
{
   ElemType *base;
   int front;
   int rear;
   size_t capacity;
}Queue;
///////////////////////////////
void Init_queue(Queue *Q)
{
   Q->base = (ElemType *)malloc(sizeof(ElemType)*(MAX_SIZE));
   assert(Q->base != NULL);
   Q->front=Q->rear=0;
   Q->capacity = MAX_SIZE;
}

bool en_queue(Queue *Q,ElemType x)
{
	if((Q->rear+1)%MAX_SIZE == Q->front)
		return false;
	Q->base[Q->rear] = x;
    Q->rear =(Q->rear+1) % MAX_SIZE;	
   return true;
}

bool de_queue(Queue *Q)
{
  if(Q->rear == Q->front)
	 return false;
  
  Q->front = (Q->front+1)%MAX_SIZE;
   return true;
}

void show_queue(Queue *Q)
{
  if(Q->front == Q->rear)
	 return ;
  int i=Q->front;
  while(i != (Q->rear))
  {
       cout<<Q->base[i]<<"<-";
	   i = (++i)%MAX_SIZE;
  }
  cout<<"endl"<<endl;
}

 

#include"queue.h"

void main()
{
  Queue sq;
  Init_queue(&sq);
  en_queue(&sq,1);
  en_queue(&sq,2);
  en_queue(&sq,3);
  en_queue(&sq,4);
  en_queue(&sq,5);
  en_queue(&sq,6);
  en_queue(&sq,7);
  de_queue(&sq);
  en_queue(&sq,8);
  de_queue(&sq);
  en_queue(&sq,9);
  show_queue(&sq);
}

 

循环队列的实现

 

注意:循环队列有一个空间用来标记,不存储数据

 

分析:首先1,2。3,4。5,6,7入队。此时已满。

           因为1出队,所以8能够入队,又因为2出对所以9能够入队。

 出入队过程:

循环队列的实现

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/115385.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 数字常用格式_数字字体大全对照表

    数字常用格式_数字字体大全对照表三位一逗:使用“N”(使用n也可以,不区分大小写),“N”后面的数字是小数位数//三位一逗,保留5位小数Console.WriteLine($"{9999.12345.ToString(

  • Spring Boot 中的异步调用[通俗易懂]

    Spring Boot 中的异步调用[通俗易懂]SpringBoot中的异步调用通常我们开发的程序都是同步调用的,即程序按照代码的顺序一行一行的逐步往下执行,每一行代码都必须等待上一行代码执行完毕才能开始执行。而异步编程则没有这个限制,代码的调用不再是阻塞的。所以在一些情景下,通过异步编程可以提高效率,提升接口的吞吐量。这节将介绍如何在SpringBoot中进行异步编程。要开启异步支持,首先得在SpringBoot入口类上加上@EnableAsync注解:@SpringBootApplication@EnableAsyncpublic

  • 找唯一不出现三次而出现1次的数子O(n)位运算算法[通俗易懂]

    找唯一不出现三次而出现1次的数子O(n)位运算算法

  • centos7 输入 ifconfig 不显示 ip 地址 连接不上的解决方法(亲测成功)「建议收藏」

    centos7 输入 ifconfig 不显示 ip 地址 连接不上的解决方法(亲测成功)「建议收藏」最近又把自己的虚拟机打开了玩玩集群,遇到一个小问题,我发现虚拟机的内存不够了,就把虚拟机关机加大了内存,谁知道开机后,ifconfig或者ipaddr显示没有ip地址,只显示一个lo,没有ens33,没有ip地址就没法用xshell连接,很蛋疼,网上也有很多解决方案,但都写的乱七八糟的,而且很多都不好使,今天就来介绍一下我最后解决的方法.我说一下我的虚拟机的情况,我三台虚拟机,之前是mas………

    2022年10月23日
  • 查看服务器硬件配置信息命令_服务器硬件参数

    查看服务器硬件配置信息命令_服务器硬件参数本次由于需要搭建一套环境,但是所需硬件配置不足,需要进行统计采购。那么就需要得知服务器现有配置,所以这次会介绍些常用的命令和工具来查询硬件信息。其实也可以通过像DELL厂商的IDRAC控制台来获取这些

  • C语言 爱心代码_用c语言编辑一个爱心

    C语言 爱心代码_用c语言编辑一个爱心需要的自取,看明白了就可以自己修改爱心的大小#include<stdio.h>intmain(){intn,k,m,p,q;for(n=1;n<=2;n++){for(k=1;k<=15-n;k++)printf(“”);for(m=1;m<=2*n;m++)printf(“*”);for(p=1;p<=5-2*

    2022年10月13日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号