c语言中队列的作用,循环队列的实现(C语言)
/*
循环队列
VS2010 调试
*/
#include
#include
#include
#define MAX_SIZE 6
#define TRUE 1
#define FALSE 0
#define OVERFLOW 0
#define OK 1
#define ERROR 0
typedef struct seq_queue
{
int front;
int rear;
int *data;
}sq;
/*
函数功能:初始化循环队列
*/
int init_seq_queue(sq *Q)
{
Q->data = (int *)malloc(MAX_SIZE * sizeof(int));
if(!Q->data)
{
return ERROR;
}
Q->front = 0;
Q->rear = 0;
return OK;
}
/*
函数功能:队列元素是否为空
返 回 值:1 为空; 0 非空
*/
int is_queue_empty(sq Q)
{
return ((Q.front == Q.rear) ? TRUE : FALSE);
}
/*
函数功能:队列是否已满
返 回 值:1 已满; 0 未满
*/
int is_queue_full(sq Q)
{
return (((Q.rear+1) % MAX_SIZE == Q.front) ? TRUE : FALSE);
}
/*
函数功能:元素num入队
*/
int enqueue(sq *Q, int num)
{
if(is_queue_full(*Q))
{
return OVERFLOW;
}
Q->rear = (Q->rear + 1) % MAX_SIZE;
Q->data[Q->rear] = num;
return OK;
}
/*
函数功能:元素出队,出队元素存入num
*/
int dequeue(sq *Q, int *num)
{
if(is_queue_empty(*Q))
{
return ERROR;
}
Q->front = (Q->front + 1) % MAX_SIZE;
*num = Q->data[Q->front];
return OK;
}
/*
函数功能:获取队头元素,元素存入num
*/
int get_elem(sq Q, int *num)
{
if (is_queue_empty(Q))
{
return ERROR;
}
*num = Q.data[Q.front + 1];
return OK;
}
/*
函数功能:获得队列长度
返 回 值:队列长度
*/
int get_queue_length(sq Q)
{
return ((Q.rear - Q.front) + MAX_SIZE) % MAX_SIZE;
}
/*
函数功能:打印队列元素
*/
void print_queue(sq Q)
{
int i = Q.front + 1;
if(is_queue_empty(Q))
{
return ;
}
printf("FRONT
while(i != ((Q.rear + 1) % MAX_SIZE))
{
printf("%d
i = (i + 1) % MAX_SIZE;
}
printf("REAR\n");
}
/*
函数功能:销毁队列
*/
void destory_queue(sq *Q)
{
free(Q->data);
}
int main(int argc, char *argv[])
{
int num = 0;
sq seq_queue;
init_seq_queue(&seq_queue);
enqueue(&seq_queue, 4);
enqueue(&seq_queue, 5);
enqueue(&seq_queue, 6);
enqueue(&seq_queue, 7);
print_queue(seq_queue);
dequeue(&seq_queue, &num);
print_queue(seq_queue);
enqueue(&seq_queue, 8);
print_queue(seq_queue);
destory_queue(&seq_queue);
return 0;
}
c语言中队列的作用,循环队列的实现(C语言)相关推荐
- c语言中三种常用的循环控制结构是,三C语言的基本控制结构.ppt
三C语言的基本控制结构 第三章 C语言的基本控制结构 问题 一元二次方程根求解算法描述 3.1 程序的三种控制结构 ⒊循环结构Repetition ⒋复合语句 CompoundStatement 3. ...
- C语言中堆、栈、队列
C语言中堆.栈和队列: 1.堆和栈 (1)数据结构的堆和栈 堆栈是两种数据结构. 栈(栈像装数据的桶或箱子):是一种具有后进先出性质的数据结构,也就是说后存放的先取,先存放的后取.这就如同要取出放在箱 ...
- c语言数组方式实现静态循环队列
1 循环队列原理图 2 结构体设计 3 运行结果图 4 完整源代码 #include<stdio.h> #include<malloc.h> /*这是一个c语言用数组方式实现循 ...
- 【数据结构】栈和队列OJ练习(栈和队列相互实现+循环队列实现)
目录 前言 1.用队列实现栈 2.用栈实现队列 3.循环队列 前言 前面在学习了栈和队列的实现之后,相信大家对栈和队列的结构和使用方式都有了一些理解. 下面我们就来进行一些练习,这这章的练习相对于原来 ...
- C语言中不同类型的循环(Different types of loops in C)
C语言中有三种类型的循环:for,while,do-while. while循环先判断循环条件. while (condition) {//gets executed after condition ...
- go语言中的选择与循环
package mainimport ("fmt""strings""time" )func main(){// 布尔类型// true和f ...
- 7-223 sdut-C语言实验-求阶乘(循环结构)7-224 sdut-C语言实验-排序问题7-225 sdut-C语言实验- 冒泡排序中数据交换的次数
目录 7-223 sdut-C语言实验-求阶乘(循环结构) 7-224 sdut-C语言实验-排序问题 7-225 sdut-C语言实验- 冒泡排序中数据交换的次数 7-223 sdut-C语言实验- ...
- C语言的格式输出 C语言中字符的作用:
这是C语言的格式输出,%c,%y这些代表你要输出的数据的数据类型:%d 表示输出十进制有符号的整数. 1.%u 十进制无符号整数. 2.%f 表示输出浮点数. 3.%s表示输出 字符串. 4.%c表示 ...
- c语言浮点变量是什么意思,C语言中说的浮点型是什么意思呢 C语言的浮点数是什么...
导航:网站首页 > C语言中说的浮点型是什么意思呢 C语言的浮点数是什么 C语言中说的浮点型是什么意思呢 C语言的浮点数是什么 相关问题: 匿名网友: 就是这个数就像有一个飘动的小数点,也就是我 ...
最新文章
- python3.5怎么使用-在ros中使用python3.5
- 【JavaScript】你知道吗?Web的26项基本概念和技术
- android listview asynctask,Android精通之AsyncTask与ListView讲解
- pytorch之mnist数据集存放位置以及本地加载
- 青岛大学计算机科学技术学院官网,田呈亮 - 青岛大学 - 计算机科学技术学院
- spring将service添加事务管理,在applicationContext.xml文件中的设置
- c语言正则表达式库,c语言正则表达式库--PCRE
- 51CTO微职位一次通过PMP之经验浅谈
- 查看dSYM文件的UUID
- Centos系统安装踩坑
- 机器学习十大算法原理总结
- android往mac投屏,安卓手机怎么投屏到Mac系统中?
- macbook不能进系统 备份数据_用数据“说话” VOCs治理在线监测系统不能少
- oracle创建索引指定用户,循序渐进学Oracle之索引、权限、角色
- 海外服务器延迟,国内用户访问海外服务器延迟高,线路不稳定怎么办
- Ranklib部分源码分析
- 第二十章 : 正则表达式
- 随记1 MySQL之特殊字符(表情)的存储以及读取乱码问题
- 人工智能,突破你认知的新用途
- linux安装Zeppelin
热门文章
- caffe-SSD源码解析——生成数据列表及数据集
- Joint European Conference on Machine Learning and Knowledge Discovery in Databases(ECML-PKDD)会议怎么样?
- 对 BatchNormalization 中 Internal Convariate Shift 的理解
- FZU 2129 子序列个数 (递推dp)
- Linux命令总结:file
- PC机中各类存储器的逻辑连接情况
- 实战PHP数据结构基础之队列
- Git系列一之安装管理
- DispatcherHelper
- tomcat中多个域名配置