/*

循环队列

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语言)相关推荐

  1. c语言中三种常用的循环控制结构是,三C语言的基本控制结构.ppt

    三C语言的基本控制结构 第三章 C语言的基本控制结构 问题 一元二次方程根求解算法描述 3.1 程序的三种控制结构 ⒊循环结构Repetition ⒋复合语句 CompoundStatement 3. ...

  2. C语言中堆、栈、队列

    C语言中堆.栈和队列: 1.堆和栈 (1)数据结构的堆和栈 堆栈是两种数据结构. 栈(栈像装数据的桶或箱子):是一种具有后进先出性质的数据结构,也就是说后存放的先取,先存放的后取.这就如同要取出放在箱 ...

  3. c语言数组方式实现静态循环队列

    1 循环队列原理图 2 结构体设计 3 运行结果图 4 完整源代码 #include<stdio.h> #include<malloc.h> /*这是一个c语言用数组方式实现循 ...

  4. 【数据结构】栈和队列OJ练习(栈和队列相互实现+循环队列实现)

    目录 前言 1.用队列实现栈 2.用栈实现队列 3.循环队列 前言 前面在学习了栈和队列的实现之后,相信大家对栈和队列的结构和使用方式都有了一些理解. 下面我们就来进行一些练习,这这章的练习相对于原来 ...

  5. C语言中不同类型的循环(Different types of loops in C)

    C语言中有三种类型的循环:for,while,do-while. while循环先判断循环条件. while (condition) {//gets executed after condition ...

  6. go语言中的选择与循环

    package mainimport ("fmt""strings""time" )func main(){// 布尔类型// true和f ...

  7. 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语言实验- ...

  8. C语言的格式输出 C语言中字符的作用:

    这是C语言的格式输出,%c,%y这些代表你要输出的数据的数据类型:%d 表示输出十进制有符号的整数. 1.%u 十进制无符号整数. 2.%f 表示输出浮点数. 3.%s表示输出 字符串. 4.%c表示 ...

  9. c语言浮点变量是什么意思,C语言中说的浮点型是什么意思呢 C语言的浮点数是什么...

    导航:网站首页 > C语言中说的浮点型是什么意思呢 C语言的浮点数是什么 C语言中说的浮点型是什么意思呢 C语言的浮点数是什么 相关问题: 匿名网友: 就是这个数就像有一个飘动的小数点,也就是我 ...

最新文章

  1. python3.5怎么使用-在ros中使用python3.5
  2. 【JavaScript】你知道吗?Web的26项基本概念和技术
  3. android listview asynctask,Android精通之AsyncTask与ListView讲解
  4. pytorch之mnist数据集存放位置以及本地加载
  5. 青岛大学计算机科学技术学院官网,田呈亮 - 青岛大学 - 计算机科学技术学院
  6. spring将service添加事务管理,在applicationContext.xml文件中的设置
  7. c语言正则表达式库,c语言正则表达式库--PCRE
  8. 51CTO微职位一次通过PMP之经验浅谈
  9. 查看dSYM文件的UUID
  10. Centos系统安装踩坑
  11. 机器学习十大算法原理总结
  12. android往mac投屏,安卓手机怎么投屏到Mac系统中?
  13. macbook不能进系统 备份数据_用数据“说话” VOCs治理在线监测系统不能少
  14. oracle创建索引指定用户,循序渐进学Oracle之索引、权限、角色
  15. 海外服务器延迟,国内用户访问海外服务器延迟高,线路不稳定怎么办
  16. Ranklib部分源码分析
  17. 第二十章 : 正则表达式
  18. 随记1 MySQL之特殊字符(表情)的存储以及读取乱码问题
  19. 人工智能,突破你认知的新用途
  20. linux安装Zeppelin

热门文章

  1. caffe-SSD源码解析——生成数据列表及数据集
  2. Joint European Conference on Machine Learning and Knowledge Discovery in Databases(ECML-PKDD)会议怎么样?
  3. 对 BatchNormalization 中 Internal Convariate Shift 的理解
  4. FZU 2129 子序列个数 (递推dp)
  5. Linux命令总结:file
  6. PC机中各类存储器的逻辑连接情况
  7. 实战PHP数据结构基础之队列
  8. Git系列一之安装管理
  9. DispatcherHelper
  10. tomcat中多个域名配置