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语言
线性结构:有且只有一个根节点,且每个节点最多有一个直接前驱和一个直接后继的非空数据结构 非线性结构:不满足线性结构的数据结构 队列 队列一般分为两类:链式队列和顺序队列 链式队列---链式队列即用链表 ...
随机推荐
- js类的constructor中不支持异步函数吗?
解决方案: 1.如果是普通函数,可以用async 和await来解决你的问题但你这个是在constructor里,constructor 的作用是返回一个对像实例,如果加了async就变成返回一个pr ...
- APP图标在线生成
在线生成安卓APP图标生成 图标在线 在线图标 安卓图标 生成图标 https://icon.wuruihong.com/ 在线png图片压缩 png压缩 https://compresspng.c ...
- 第二篇 Springboot mybatis generate根据数据库表自动生成实体类、Mapper和Mapper.xml
源码链接:https://pan.baidu.com/s/1iP4UguBufHbcIEv4Ux4wDw 提取码:j6z9 目录结构如下:只需增加一个generatorConfig.xml文件和在po ...
- 用C语言实现汉诺塔自动递归演示程序
用C语言实现汉诺塔自动递归演示程序 程序实现效果 1.变界面大小依照输入递归数改变. 2.汉诺塔自动移动演示. 3.采用gotoxy实现流畅刷新. 4.保留文字显示递归流程 程序展示及实现 githu ...
- 前端html,css考点
1, 内联元素,块级元素相关知识点 参考链接:https://edu.aliyun.com/a/103378 (1)置换元素 概念:浏览器根据元素的标签和属性,来决定元素的具体显示内容.<img ...
- codewars--js--create phone number
Write a function that accepts an array of 10 integers (between 0 and 9), that returns a string of th ...
- 与WinRT组件进行操作
1,原理: WinRT是一个新的类库,应用程序可以用它访问操作系统的功能. 在内部,WinRT以组件的形式实现.COM Component Object Model- WinRT使用.net元数据来描 ...
- python基础入门之四 —— 列表
1.格式 [数据1,数据2,数据3,...] 列表可以一次性存多个数据,可以为不同的数据类型 2.下标 从0开始循序向下分配 3.常用函数 查找 index():返回指定数据所在位置下标,不存在就报错 ...
- count(1)比count(*)效率高?
SELECT COUNT(*) FROM table_name是个再常见不过的统计需求了. 本文带你了解下Mysql的COUNT函数. 一.COUNT函数 关于COUNT函数,在MySQL官网中有详细 ...
- 限制input输入框只能输入 数字
<input type="text" oninput = "value=value.replace(/[^\d]/g,'')">