C语言实现 循环队列
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
typedef struct queue
{
int * pBase ; //数组
int front ; //头
int rear ; //尾 rear不存放数据,所以rear前面的是最后一个数据
}QUEUE ;
void init_queue(QUEUE * pQ);
bool full_queue(QUEUE * pQ);
bool en_queue(QUEUE * pQ ,int val);
void show_queue(QUEUE * pQ) ;
bool is_empty(QUEUE * pQ);
bool out_queue(QUEUE * pQ,int * pVal);
int main()
{
int val ;
QUEUE Q ;
init_queue(&Q); //初始化
en_queue(&Q,1);
en_queue(&Q,2);
en_queue(&Q,3);
en_queue(&Q,4);
en_queue(&Q,5);
en_queue(&Q,6);
// en_queue(&Q,7);
show_queue(&Q);
if(out_queue(&Q,&val))
{
printf("出队成功,出队的元素是:%d\n",val);
}
else
{
printf("出队失败!") ;
}
show_queue(&Q) ;
}
void init_queue(QUEUE * pQ) //传入的是 QUEUE型的指针所以是QUEUE *
{
pQ->pBase =(int *)malloc(sizeof(int)*6);//创建了6个大小的数组,实际上只能放5个
pQ->rear = 0 ;
pQ->front = 0 ;
}
//判断循环队列是否为满:少用一个元素如果(rear+1)%6 == front 则满
bool full_queue(QUEUE * pQ)
{
if((pQ->rear+1)%6==pQ->front ) return true ;
else return false ;
}
bool en_queue(QUEUE * pQ ,int val)
{
if(full_queue(pQ))
{
return false ;
}
else
{
pQ->pBase[pQ->rear] =val ;
pQ->rear =(pQ->rear+1)%6 ;
return true ;
}
}
void show_queue(QUEUE * pQ)
{
int i =pQ->front ; //让i=头部序列
while(i!=pQ->rear)
{
printf("%d ",pQ->pBase[i]);
i=(i+1)%6;
}
printf("\n");
}
bool is_empty(QUEUE * pQ)
{
if(pQ->rear == pQ->front) return true ;
else return false ;
}
bool out_queue(QUEUE * pQ,int * pVal)
{
if(is_empty(pQ))
{
return false;
}
else
{
*pVal=pQ->pBase[pQ->front];
pQ->front=(pQ->front+1)%6 ;
return true ;
}
}
C语言实现 循环队列的更多相关文章
- C语言数据结构-循环队列的实现-初始化、销毁、清空、长度、队列头元素、插入、删除、显示操作
1.数据结构-循环队列的实现-C语言 #define MAXSIZE 100 //循环队列的存储结构 typedef struct { int* base; //基地址 int _front; //头 ...
- C语言实现循环队列
今日在处理数据存储的问题中,数据占用的空间较大,在询问之下,提及循环队列. 没有学习过的我,想想就是头大,只能慢慢从网上找资料,一个字母一个字母的敲,最后,还是慢慢的对队列有了一些理解 对于循环队列有 ...
- C语言实现循环队列的初始化&进队&出队&读取队头元素&判空-2
/*顺序表实现队列的一系列操作(设置flag标志不损失数组空间)*/ #include<stdio.h> #include<stdlib.h> #define Queue_Si ...
- 数据结构算法C语言实现(十二)--- 3.4循环队列&队列的顺序表示和实现
一.简述 空队列的处理方法:1.另设一个标志位以区别队列是空还是满:2.少用一个元素空间,约定以队列头指针在队尾指针下一位置上作为队列呈满的状态的标志. 二.头文件 //3_4_part1.h /** ...
- C语言实现使用动态数组实现循环队列
我在上一篇博客<C语言实现使用静态数组实现循环队列>中实现了使用静态数组来模拟队列的操作. 因为数组的大小已经被指定.无法动态的扩展. 所以在这篇博客中,我换成动态数组来实现. 动态数组能 ...
- 数据结构(C语言版)---第三章栈和队列 3.4.2 队列的链式表示和实现(循环队列)
这个是循环队列的实现,至于串及数组这两章,等有空再看,下面将学习树. 源码如下: #include <stdio.h> #include <stdlib.h> #define ...
- c语言编程之循环队列
利用链表实现的循环队列,完成了队列的入队和出队,对于队空和队满用了一个flag进行标记.入队flag++,出队flag-- #include"stdio.h" typedef in ...
- 数据结构:循环队列(C语言实现)
生活中有非常多队列的影子,比方打饭排队,买火车票排队问题等,能够说与时间相关的问题,一般都会涉及到队列问题:从生活中,能够抽象出队列的概念,队列就是一个能够实现"先进先出"的存储结 ...
- 队列(循环队列)----C语言
线性结构:有且只有一个根节点,且每个节点最多有一个直接前驱和一个直接后继的非空数据结构 非线性结构:不满足线性结构的数据结构 队列 队列一般分为两类:链式队列和顺序队列 链式队列---链式队列即用链表 ...
随机推荐
- Ant Design Vue Pro 项目实战-项目初始化(一)
写在前面 时间真快,转眼又是新的一年.随着前后端技术的不断更新迭代,尤其是前端,在目前前后端分离开发模式这样的一个大环境下,交互性.兼容性等传统的开发模式已经显得有些吃力.之前一直用的是react,随 ...
- 20191228--python学习第四天
今日内容: 列表 元组 内容回顾与补充 1.计算机基础 硬件:CPU/内存/硬盘/主板/网卡 操作系统:linux(免费/开源) centos/ubuntu/redhat windows ma ...
- ELF文件之六——使用链接脚本-2个函数-data-bss-temp
main.c int enable; ; int main() { int temp; ; } int add() { ; } elf反汇编结果如下,可以看出main函数中的栈多开了8字节,虽然局部变 ...
- php oci 和 pdo_oci 安装
安装非常复杂,必须记录 CentOS服务器上已有相关环境:apache.php5 需要安装:1.oracle客户端.2.oci8扩展.3.pdo_oci扩展. 一. 准备文件 1) oracle客户端 ...
- Xcode如何集成Pod教程
一般开发都会用到很多第三方的框架,利用好他们可以加快开发进度,为了更方便将第三方的框架集成到我们的项目中,Pod是个很好的选择,现在说一下该怎么将Pod集成到我们的Xcode中 第一种方法 命令行的方 ...
- c语言标准I/O
头文件 <stdio.h> 打开/关闭文件 FILE *fopen(char *filename, char *mode); 如果正常打开返回FILE指针,否则返回NULL mode常用值 ...
- 简化MVVM属性设置和修改 - .NET CORE(C#) WPF开发
微信公众号:Dotnet9,网站:Dotnet9,问题或建议:请网站留言, 如果对您有所帮助:欢迎赞赏. 简化MVVM属性设置和修改 - .NET CORE(C#) WPF开发 阅读导航 常用类属性设 ...
- 基于Struts2开发校园二手购物商城源码
开发环境: Windows操作系统开发工具: MyEclipse+Jdk+Tomcat+MySQL数据库 次项目分为管理员和普通用户两种角色 运行效果图 源码及原文链接:https://javadao ...
- Docker下Jenkins的安装部署、更新
一.下载Jenkins镜像 docker pull jenkins/jenkins 二.创建挂载文件 mkdir /srv/jenkins chown -R : /srv/jenkins 三.启动Do ...
- MySQL基础(3) | 函数
MySQL基础(3) | 函数 前言 MySQL只有标量值函数的概念,没有SqlServer那种表值函数. 语法 创建 create function f_add( a int, b int ) re ...