队列的顺序存储表示---数组实现
2015-07-03 13:17
549 查看
#define MaxSize 10 typedef struct Node{ ElementType *Array; int front; int rear; } *Queue; Queue CreateQueue( int MaxSize ) { Queue PtrQ; PtrQ = malloc(sizeof(struct Node )); if(PtrQ == NULL) printf("out of space "); PtrQ->Array = malloc(sizeof( ElementType ) * MaxSize ); if(PtrQ == NULL ) printf("out of space "); PtrQ->front = 0; PtrQ->rear = 0; return PtrQ; } int IsFull( Queue PtrQ ) { return (rear+1) % MaxSize == front; } void AddQ(ElementType X, Queue PtrQ) { if( IsFull( PtrQ ) ) { printf("队列满"); return; } PtrQ->rear = (Q->rear + 1) % MaxSize; PtrQ->Array[PtrQ->rear] = X; } int IsEmpty(Queue PtrQ ) { return PtrQ->rear == PtrQ->front; } ElementType DeleteQ( Queue PtrQ ) { if( IsEmpty( PtrQ ) ) { printf("队列空"); return; } PtrQ->front = (PtrQ->front + 1) % MaxSize; return PtrQ->Array[PtrQ->front]; }
View Code
以上为循环数组存储,且没有把size域放在结构里,这种方式,一个结构就是一个队列
判断队列满空,还可以用结构中加size域和tag(记录最后一次是插入还是删除)
MaxSize的数组只用MaxSize-1的空间
rear指向队列的最后一个元素
front指向队列的第一个元素的前面
front = rear 为空
front = (rear+1) % MaxSize 为满
相关文章推荐
- 【PB】Sybase Adaptive Server Anywhere (ASA)数据库*.db 密码破解备忘
- 简单翻页动画实现
- binlog在并发状态下的记录
- 在线问答(数据库部分)
- ios app 解决微信扫二维码不能跳转问题
- iOS 自定义UINavigationController返回按钮
- Linux 的五个查找命令
- 凯勒茨基:不起眼的希腊真以为自己能毁掉整个金融世界?
- WPF 的选择框样式
- LInux远程文件传输效率工具:lrzsz
- setuid,setgid,sticky
- openfire-spark 二次开发-(三)源码系统总览-2
- 数据结构习题之树
- 给图标设置标号
- Locust - A modern load testing framework
- BZOJ 2561 最小生成树 【最大流】
- block多层嵌套使用时,造成控制器对象不能释放
- Centos 6.5 搭建NFS服务器笔记
- leetcode#229 Majority Element II
- 表单验证