题目:
若希望循环队列中的元素都能得到利用,则需设置一个标志域tag,并以tag的值为0或1来区分队头指针front和队尾指针rear相同时队列状态是空还是满。试编写与此结构相对应的入队和出队算法。

front ==rear && tag ==0,队空;
front ==rear && tag ==1,队满;

初始化:

#define MaxSize 50;
typedef struct{ElemType data[MaxSize];int front,rear,tag;
}SqQueue;

入队:

bool EnQueue(SqQueue &Q,ElemType x){if(Q.tag == 1 && Q.front == Q.rear) return false; //队满不允许插入元素;//初始时,front=rear=-1,增加元素时,rear先加1再赋值;Q.rear = (Q.rear +1)%MaxSize; //需要插入元素的位置;Q.data[Q.rear] = x;//如果队满;Q.tag =1;return true;
}

出队:

bool DeQueue(SqQueue &Q,ElemType &x){if(Q.tag ==0 && Q.front ==Q.rear) return false; //队空,不再删除元素;//假设front初始时为-1,则删除元素时,front先加1再删除元素;Q.front = (Q.front+1)%MaxSize;x = Q.data[Q.front];//如果队空;Q.tag =0;return true;
}

用标志域tag判断队空队满的入队和出队算法相关推荐

  1. 使用标志量消除循环链表“假溢出”的入队和出队算法

    问题:要求循环变量不损失一个空间全部都能利用,设置一个标志量tag,以tag为0或为1来区分头尾指针相同时的队列状态.请编写出此结构相应的入队与出队算法. 设标志位tag,初始化时将tag置为0,当入 ...

  2. 队列的入队、出队基本操作

    队列 先进先出的线性表(FIFO) 队尾:队列中指定了用来插入数据的一端 队头:队列中指定了用来删除数据的一端 入队:数据的插入动作 出队:数据的删除动作 1.顺序队列 //顺序队列 #define ...

  3. 队列的入队和出队操作

    开发工具与关键技术:Visual Studio 2015 作者:杨灵武 撰写时间:2020/05/27 让我们跟着课程队列的特点.好比我们生活中也会发生的排队, 先排队的人先得到服务,先走出队列,后面 ...

  4. 队列的基本操作(入队、出队、清空……)

    队列的基本操作(入队.出队.清空--) SqQue.h #ifndef __SQQUE_H__ #define __SQQUE_h__ typedef int element; typedef str ...

  5. 复习队列的入队和出队操作

    开发工具与关键技术:Visual Studio 2015 作者:杨灵武 撰写时间:2020/04/27 让我们跟着唐懿芳教授的课程来回忆一下队列的特点.好比我们生活中也会发生的排队,先排队的人先得到服 ...

  6. 循环队列的入队,出队,求队长,取对头元素功能实现

    目录 一.队列的定义 二 .真溢出与假溢出 三.解决假溢出 四.注意 五.代码 一.队列的定义 队列只能在一端插入,另一端删除,插入的一端叫队尾(rear),删除的一端叫队首(front).     ...

  7. 循环队列,定义循环队列长度为10,编写初始化队列、入队、出队、求队长,实现10,20,30,40,50,60,70,80入队,10,20,30出队,56,67入队的算法功能。

    循环队列,定义循环队列长度为10,编写初始化队列.入队.出队.求队长,实现10,20,30,40,50,60,70,80入队,10,20,30出队,56,67入队的算法功能. #include< ...

  8. 队列的入队、出队操作

    队列的常用操作就是入队和出队,这里入队用函数insert实现,出队用函数del实现,print函数实现队列的遍历做操: #include <iostream> #include <s ...

  9. 单链表实现队列的基本操作(入队,出队)

    单链表实现队列的基本操作(包括初始化队列,入队,出队) 构造队列结构体 struct node {int data;node *next; };struct queue {node *head, *t ...

最新文章

  1. bzoj1095: [ZJOI2007]Hide 捉迷藏 线段树维护括号序列 点分治 链分治
  2. linux /etc/fstab文件参数求解释
  3. 2.6内核中被废弃的pci_present()
  4. App 组件化/模块化之路——如何封装网络请求框架
  5. c语言程序设计教程ppt,《C语言程序设计教程》.ppt
  6. Android开发中反编译时出现Unsupported major.minor version 51.0错误的问题
  7. HDU6376 度度熊剪纸条
  8. Python 函数参数有冒号 声明后有- 箭头
  9. 获取mysql所有用户权限_python 获取mysql数据库列表以及用户权限
  10. matlab远程桌面访问:License Manager Error - 103
  11. react(87)--批量删除进行置空操作
  12. yum 安装oraclejdk_kubernetes-16:制作oraclejdk镜像
  13. linux服务器安装补丁包,Linux下Web服务器环境搭建LNMP一键安装包 v2.6[20141224更新] | 系统运维...
  14. AJAX在IE下的调试
  15. 脱库站库分离渗透解决MySQL禁止外连
  16. VSCODE无法代码跳转
  17. 第五模块 常用邮件沟通场景(1):求职信
  18. 瑞星木马防御专杀QQ,360,百度软件管家(见图为证!)
  19. java 拼多多电子面单打印_商家自定义模板
  20. selenium小白学习笔记(6) - 使用parameterized参数化

热门文章

  1. 腾讯TBS在线加载浏览DOC文档
  2. MacOS提示“Developer tools access“需要控制另一个进程,以便继续调试
  3. JS 区分+0和-0
  4. 九年级计算机教学课时计划,信息技术教学计划(精选3篇)
  5. 在windbg调试的时候 针对ecx和eax说明
  6. 树莓派Zero (w)上手记录
  7. MySQL 免安装版的安装过程
  8. 计算机二级试题word,计算机二级word试题
  9. 【C++】计算两个日期之间的差
  10. vue3获取当前日期和时间