数据结构和算法--队列的数组实现
来源:互联网 发布:java 变量类型 编辑:程序博客网 时间:2024/05/20 05:30
//循环队列(队列的顺序存储)的实现//注意:如果想实现循环队列,那么队列里面最多能够存放N-1个数据#include <stdio.h>#include <stdlib.h>#define N 32//定义数据类型typedef int datatype_t;//定义结构体typedef struct{datatype_t data[N];int front; //第一项的角标 int rear; //最后一项的角标 默认没有赋值状}sequeue_t;//创建一个空的队列sequeue_t *sequeue_create(){sequeue_t *sq = (sequeue_t *)malloc(sizeof(sequeue_t));sq->front = sq->rear = 0;return sq;}//判断队列是否为满int sequeue_full(sequeue_t *sq){return sq->front == (sq->rear + 1) % N ? 1 : 0;}//判断队列是否为空int sequeue_empty(sequeue_t *sq){return sq->front == sq->rear ? 1 : 0;}//入队int sequeue_input(sequeue_t *sq, datatype_t value){if(sequeue_full(sq)){printf("sequeue is full\n");return -1;}sq->data[sq->rear] = value;// 赋值 sq->rear = (sq->rear + 1) % N;//给表示最后一项空项的角标赋值 return 0;}//出队datatype_t sequeue_output(sequeue_t *sq){datatype_t value;if(sequeue_empty(sq)){printf("sequeue is empty\n");return (datatype_t)-1;}value = sq->data[sq->front];sq->front = (sq->front + 1) % N;//如果有数据则头部指针加一 只是指针加一 数据未动 return value;}int main(int argc, const char *argv[]){sequeue_t *sq = sequeue_create();sequeue_input(sq, 10);sequeue_input(sq, 20);sequeue_input(sq, 30);sequeue_input(sq, 40);sequeue_input(sq, 50);printf("del = %d\n", sequeue_output(sq));printf("del = %d\n", sequeue_output(sq));printf("del = %d\n", sequeue_output(sq));printf("del = %d\n", sequeue_output(sq));printf("del = %d\n", sequeue_output(sq));printf("del = %d\n", sequeue_output(sq));printf("del = %d\n", sequeue_output(sq));return 0;}
0 0
- 数据结构和算法--队列的数组实现
- 数据结构和算法--队列的链式实现
- 实现队列---数据结构和算法
- 【数据结构】队列-数组的实现
- 数据结构和算法--栈的数组实现
- 数据结构和算法——队列的实现
- 算法-一种数组环形队列的数据结构
- 数据结构---队列(数组实现)
- 【数据结构和算法】java 队列实现
- 经典数据结构之数组实现的队列
- 数据结构学习之队列的数组实现
- [数据结构] 队列的循环数组实现
- 【C++数据结构】数组循环队列的实现
- C#数据结构和算法学习系列七----队列、队列的实现和应用
- 数据结构与算法分析-队列的实现
- 数据结构与算法-----队列-使用数组(顺序结构)实现
- 算法与数据结构 其二 数组和链表 的实现
- 数据结构队列之环形队列的动态数组实现:queue
- Android清除单个域名的cookie
- [js点滴]JavaScript中Image对象操作实例
- Codeforces 401D Roman and Numbers【状压dp】
- 洛谷3195玩具装箱(斜率优化)
- 利用链接下载该页面图片
- 数据结构和算法--队列的数组实现
- [心得]机器学习基础之线性代数笔记
- Java多线程join()
- Centos6.5编译安装nginx时出现的问题
- linux 基本命令之文件处理命令
- Spring batch基础一
- 【玲珑杯 1047】【二分匹配 KM算法或者费用流】Best couple【定义男女生的距离为最短距离,求匹配之后使得总距离最大】
- 基于Agera的EventBus实现库
- poj 3020 Antenna Placement