队列的相关操作
来源:互联网 发布:普通话纠正软件 编辑:程序博客网 时间:2024/05/22 01:58
队列的创建
Status InitQueue(LinkQueue &Q){ if(!(Q.front = Q.rear = (QueuePtr)malloc(QNode))) exit(OVERFLOW); Q.front->next = NULL; return OK;}
队列的销毁
Status DestroyQueue(LinkQueue &Q){ while(Q.front) { Q.rear = Q.front->next; free(Q.front) Q.front = Q.rear; return OK; } }
清空队列
Status ClearQueue(LinkQueue &Q){ QueuePtr p,q; Q.rear = Q.front; p = Q.front->next; while(p) { q = p; free(p); p = q->next; } return OK;}
判断队列是否为空
Status QueueEmpty(LinkQueue Q){ if(Q.front == Q.rear) return TRUE; else return FALSE;}
计算队列的长度
Status QueueLength(LingkQueue Q){ int i; QueuePtr p; p = Q.front; while(p!=Q.rear) { i++; p = p->next; } return i;}
队头元素的获取
Status GetHead(LinkQueue Q,QElemType &e){ QueuePtr p; if(Q.front == Q.rear) return ERROR; p = Q.front->next; // Q.front->data 为空 e = p->data; return OK;}
队尾的插入
Status EnQueue(LinkQueue &Q,QElemType e){ QueuePtr p; if(!(p=(QueuePtr)malloc(sizeof(QNode)))) exit(OVERFLOW); p->data = e; Q.rear->next = p; Q.rear = q; Q.rear->next = NULL: }
队头的删除
Status DeQueue(LinkQueue &Q,QElemType &e){ QueuePtr p; if(Q.front == Q.rear) return ERROR; p = Q.front->next; e = p->data; Q.front->next->next = p->next; if(p==Q.rear) Q.rear = Q.front; free(p); return OK;}
0 0
- 队列的相关操作
- 队列的相关操作
- 队列的相关操作
- 队列的相关操作
- 循环队列的相关操作
- 循环队列的相关操作
- 普通队列,循环队列以及链队列的相关操作
- 链队列的定义及相关操作
- 队列的链式存储相关操作
- 队列的相关操作_顺序存储
- 队列相关操作
- 队列操作相关函数
- 静态循环队列的相关操作及详解
- 静态循环队列的相关操作及详解
- 堆栈和队列的数据结构和相关操作总结
- 循环队列的相关操作(顺序结构)
- STL中优先队列(priority_queue)的相关操作
- 数据结构与算法学习之队列及队列的相关操作
- 关于脚本语言的解释器
- Opengl画心形
- 流动的推荐系统
- linux中的cron表达式
- vs2010中添加项目中找不到EntityFramework实体框架解决办法
- 队列的相关操作
- 快速上手Total Commander的经验分享
- uCOSii OSSchedLock()等函数说明
- leetcode89: Gray Code
- 关于推送系统设计的一些总结与思考(三)
- path.json
- hibernate基于Annotation的一对一外键映射
- 模板方式模式
- android ui和聊天界面