循环队列(数据结构)
来源:互联网 发布:澳大利亚外卖软件 编辑:程序博客网 时间:2024/05/19 09:17
一年前学的数据结构都忘得差不多了,想重温一下....
#include <stdio.h>#include <stdlib.h>#include <assert.h>#define QueueSize 5#define OK 1typedef char DataType;typedef int Status;typedef struct Queue{ DataType data[QueueSize]; int front; int rear;}CirQueue;Status InitQueue(CirQueue *Q){ Q->front = 0; Q->rear = 0; return OK;}Status QueueEmpty(CirQueue *Q){ return Q->front==Q->rear;}Status QueueFull(CirQueue *Q){ return (Q->rear+1)%QueueSize==Q->front;}Status EnQueue(CirQueue *Q, DataType c){ assert(!QueueFull(Q)); Q->data[Q->rear] = c; Q->rear = (Q->rear+1)%QueueSize; return OK;}DataType DeQueue(CirQueue *Q){ assert(!QueueEmpty(Q)); DataType val = Q->data[Q->front]; Q->front = (Q->front+1)%QueueSize; return val;}DataType GetHead(CirQueue *Q){ assert(!QueueEmpty(Q)); return Q->data[Q->front];}Status ClearQueue(CirQueue *Q){ Q->front = 0; Q->rear = 0; return OK;}int QueueLength(CirQueue *Q){ return (Q->rear-Q->front+QueueSize)%QueueSize;}int main(){ CirQueue queue; InitQueue(&queue); if(QueueEmpty(&queue)) {EnQueue(&queue, 'A'); EnQueue(&queue, 'R'); EnQueue(&queue, 'E'); EnQueue(&queue, 'T');//空出一个了元素位置以区别满队列 与空队列 //EnQueue(&queue, 'Y'); } if(QueueFull(&queue)) { printf("QueueLength = %d\n", QueueLength(&queue)); printf("TopHead = %c\n", GetHead(&queue)); printf("DeQueue = %c\n", DeQueue(&queue));printf("DeQueue = %c\n", DeQueue(&queue));printf("DeQueue = %c\n", DeQueue(&queue));printf("TopHead = %c\n", GetHead(&queue));printf("DeQueue = %c\n", DeQueue(&queue)); } else {printf("QueueLength = %d\n", QueueLength(&queue)); } if(ClearQueue(&queue))printf("QueueLength = %d\n", QueueLength(&queue)); system("pause");return 0;}
- 循环队列(数据结构)
- 数据结构:循环队列(二)
- 数据结构(三)--循环队列
- 数据结构之顺序队列(循环队列)
- 【数据结构】队列-循环队列
- 【数据结构-队列】循环队列
- 数据结构(队列):循环队列
- 数据结构-08 队列(循环队列)
- 数据结构(C语言)实现循环队列
- 数据结构:队列(循环数组实现)
- 数据结构:循环队列(C语言实现)
- 数据结构:循环队列(C语言实现)
- 【数据结构】循环队列的实现(c++)
- 数据结构——循环队列(c++)
- 数据结构:循环队列(C语言实现)
- JavaScript 数据结构(3):循环队列 CircularQueue
- 数据结构:循环队列(C语言实现)
- 数据结构(循环队列子系统:c实现)
- Windows Sockets编程模型详解
- 有没有认识中科大计算机的朋友啊,如有,请帮个忙,我今年考科大研究生,想找个好导师
- 【数据结构与算法】二叉堆
- Android Tomcat 的应用之客户端部分
- 元启发式方法之模拟退火算法
- 循环队列(数据结构)
- ISTQB - 名词解释
- 计算机--常用技术网站
- java.io.File操作文件的一些常用方法
- JS 动态加载下拉框
- Spring容器Bean的实例化方式和声明周期
- Xen的Hypervisor和Domain0的关系
- java学习7--Java I/O 操作与字节流
- 1.把二元查找树转变成排序的双向链表