队列的顺序存储结构及其基本运算的实现
2016-04-01 12:08
477 查看
队列是一种受限的线性表,其限制为仅在表的一段进行插入,在表的另一端进行删除。
队尾为rear,队首为front,队列的 基本特征先进先出。
队尾为rear,队首为front,队列的 基本特征先进先出。
#include <iostream> #include <stdlib.h> #define MaxSize 10 using namespace std; typedef char ElemType; typedef struct { ElemType data[MaxSize]; int front,rear; } SqQueue; void InitQueue(SqQueue *q);//初始化队列 void DestroyQueue(SqQueue *q);//销毁队列 bool QueueEmpty(SqQueue *q);//判断队列是否为空 bool enQueue(SqQueue *q,ElemType e);//进队列 bool deQueue(SqQueue *q,ElemType &e);//出队列 int main() { SqQueue *q = new SqQueue(); cout<<"1、初始化队列"<<endl; InitQueue(q); cout<<"2、判断队列是否为空:"; cout<<QueueEmpty(q)<<endl; cout<<"3、进队"<<endl; enQueue(q,'a'); ElemType e; deQueue(q,e); cout<<"6、出队列:"<<e<<endl; cout<<"5、进队"<<endl; enQueue(q,'b'); deQueue(q,e); cout<<"6、出队列:"<<e<<endl; cout<<"7、销毁队列"<<endl; DestroyQueue(q); cout<<"2、判断队列是否为空:"; cout<<QueueEmpty(q)<<endl; return 0; } bool deQueue(SqQueue *q,ElemType &e)//出队列 { if(q->front==q->rear) return false; else { q->front++; e=q->data[q->front]; return true; } } bool enQueue(SqQueue *q,ElemType e)//进队列 { if(q->rear == MaxSize-1) return false; else { q->rear++; q->data[q->rear] = e; return true; } } bool QueueEmpty(SqQueue *q)//判断队列是否为空 { return(q->front == q->rear); } void DestroyQueue(SqQueue *q)//销毁队列 { free(q); } void InitQueue(SqQueue *q)//初始化队列 { q=(SqQueue *)malloc(sizeof(SqQueue)); q->front = q->rear = -1; }结果如下:
相关文章推荐
- POJ 2942Knights of the Round Table(二分图判定+双连通分量)
- UVa 131 - The Psychic Poker Player
- 打印log 保存log
- 如何保持自己的应用和关联的第三方框架同步更新?
- 云计算:利用叶子云桌面虚拟化管理平台搭建企业的桌面云,叶子云安装(二)
- java的守护线程与非守护线程
- mysql使用kill命令解决死锁问题,杀死某条正在执行的sql语句
- C++ 使用开源库里.h文件和.lib文件的步骤
- 模板方法模式
- OWASP-ZAP
- 数据结构与算法之二分查找
- js部分基础知识
- sudo apt-get update出现错误
- scope颜色修改
- 【DB】HBase的基本概念
- lightoj 1191 - Bar Codes 简单DP
- 移除数组中的重复元素
- Java入门:一些初学者需要掌握的基础算法程序——逆序输出
- 通俗易懂的匈牙利算法
- ShaderLab: Pass