数据结构再学习--队列
来源:互联网 发布:js校验身份证号 编辑:程序博客网 时间:2024/04/30 12:22
队列遵循着先入先出的原则,由一个线性表和两个保存头尾索引的变量组成,为了节省空间和提高效率,可以把队列做成循环队列。使得移除的数据留下的空间可以循环利用,而仅仅失去一个位置用来处理判断队列是否为满。
下面是队列和循环队列的实现
// 普通的队列void initXBQueue(XBQueue*q)//初始化队列{ q->front=-1; q->rear=-1;}int isXBQueueEmpty(XBQueue*q)//判断队列是否空{ if(q->front==q->rear) { return YES; } else { return NO; }}int isXBQueueFull(XBQueue*q)//判断是否满了{ if(q->rear==MAX_SIZE-1) { printf("队列已经满了,不能进入队列操作\n"); return 1; } else { return 0; } }int getXBQueueLength(XBQueue q)//获取长度{ return (q.rear-q.front);}int insertXBQueue(XBQueue*q,DATATYPE m)//插入元素{ if(isXBQueueFull(q)) return 0; q->rear=q->rear+1; q->qm[q->rear]=m; return 1;}int delXBQueueItem(XBQueue*q,DATATYPE *e){ if(isXBQueueEmpty(q))return 0; q->front=q->front+1; *e=q->qm[q->front]; return 1;}void printXBQueue(XBQueue q){ int i; printf("队列的元素是:\n"); for(i=q.front+1;i<=q.rear;i++) { printf("%d",q.qm[i]); } printf("\n");}// -----循环队列// 循环队列初始化的时候可以设置,头指针和尾指针可以设置为0,不能设置为-1,否则循环部分计算复杂.void initXBLoopQueue(XBLoopQueue*q)//初始化队列{ q->front=0; q->rear=0;}//相等的条件判断没有变化int isXBLoopQueueEmpty(XBLoopQueue*q)//判断队列是否空{ if(q->front==q->rear) { return YES; } else { return NO; }}int isXBLoopQueueFull(XBLoopQueue*q)//判断是否满了{ if (q->front==0&&q->rear==M-1) {//这是一直插入但是没有取出的情况,所以最后一个位置无法存储元素。。 return YES; } if (q->rear%M==q->front-1) { //这是出现了循环 return YES; } return NO;}int getXBLoopQueueLength(XBLoopQueue q)//获取长度{ if (q.front<q.rear%M) { return q.rear - q.front; } else { return M-q.front+q.rear;//这里处理循环的情景 }}int insertXBLoopQueue(XBLoopQueue*q,DATATYPE m)//插入元素{ if(isXBLoopQueueFull(q)){ return NO; } q->qm[q->rear]=m; q->rear=(q->rear+1)%M; return YES;}int delXBLoopQueueItem(XBLoopQueue*q,DATATYPE *e){ if(isXBLoopQueueEmpty(q))return NO; *e=q->qm[q->front]; q->front=(q->front+1)%M; return YES;}void printXBLoopQueue(XBLoopQueue q){ printf("队列的元素是:\n"); while (!isXBLoopQueueEmpty(&q)) { DATATYPE e; delXBLoopQueueItem(&q, &e); printf("%d ",e); } printf("\n");}
0 0
- 数据结构再学习--队列
- 数据结构学习之队列
- 数据结构学习笔记--队列
- 数据结构学习之队列
- 数据结构学习--队列
- 数据结构学习之队列
- 数据结构学习四 队列
- 数据结构学习笔记--队列
- 数据结构学习三:队列
- 数据结构学习笔记--队列
- 数据结构之队列学习
- 【数据结构学习6】队列学习
- 数据结构学习笔记 --- 队列(链队列)
- 数据结构学习笔记 --- 队列(链队列)
- 数据结构学习--栈和队列
- 数据结构学习笔记之队列
- 数据结构学习笔记3-队列
- 数据结构学习笔记之队列
- android线性布局__LinearLayout的简单学习
- windows下ant批量打包工具
- 逻辑推理训练
- cocos 自定义事件
- Oracle-数据的导入与导出
- 数据结构再学习--队列
- 计算机组成原理 运算方法:定点数加减
- Andorid DrawerLayout控件的使用方法
- Hibernate(一) 之 延迟加载
- cocos-js,热更新1---搭建热更服务器
- 映射
- 使用BeanUtils进行一些简单的操作
- Android官方开发文档Training系列课程中文版:通知用户之大视图通知
- Mac OS X用当前选中的文字生成便签的快捷键是什么