队列(静态方式)
16lz
2021-01-22
队列是一种只允许在队尾插入元素,在队头插入元素的一种数据结构。就比如我们生活中的排队。队列最主要的是判断队空或者队满。队列的静态方式实现,利用数组设置一个循环的队列。代码如下:
#include <iostream>#include <stdio.h>#include <stdlib.h>#define MaxSize 10/* run this program using the console pauser or add your own getch, system("pause") or input loop *//*判断队列空满: 方案一:代码(浪费一个存储空间,用来判断队满和队空) 方案二:增加一个变量表示队列长度(初始化为0),每增加一个元素长度加一,每删除一个元素减一。最后长度为MaxSize的队满,长度为0的队空(不浪费) 方案三:增加一个判断型变量表示最近一次插入(0)或者删除的操作 (1),每次增加元素都使变量置为0,删除元素都使变量置为1。这样结合队头和队尾指针指向同一个地方就可以判断(不浪费) *///静态方式定义队列typedef struct { int data[MaxSize];//用静态数组存放元素 int front,rear;//队头指针和队尾指针 }SqQueue; //静态方式初始化队列(队头队尾都指向0) void InitQueue(SqQueue &Q){ Q.front = 0; Q.rear = 0;}//静态方式判断是否为空队列 bool isEmpty(SqQueue Q){ if(Q.front==Q.rear){ return true; }else{ return false; }}//静态方式入队bool EnQueue(SqQueue &Q,int x){ if((Q.rear+1)%MaxSize==Q.front){//队满报错 return false; } Q.data[Q.rear] = x; Q.rear = (Q.rear+1)%MaxSize;//队尾+1取模(形成循环结构队列) return true;} //静态方式入队bool DeQueue(SqQueue &Q,int &x){ if(Q.front==Q.rear){//队空报错 return false; } x = Q.data[Q.rear]; Q.front = (Q.front+1)%MaxSize;//队头+1取模(形成循环结构队列) return true;}//静态方式获得队头元素bool GetQueue(SqQueue &Q,int &x){ if(Q.front==Q.rear){//队空报错 return false; } x = Q.data[Q.rear]; return true;}//队列元素个数计算((rear+MaxSize-front)%MaxSize) int main(int argc, char** argv) { SqQueue Q; InitQueue(Q); return 0;}
更多相关文章
- 队列(链式)
- 数据结构与算法(5)队列
- 小程序静态资源如何设置防盗链?
- 静态h5页面没有后台直接访问本地json文件
- Jquery中的队列函数quene()、dequene()、clearQuene()
- 在Rails 3中通过.ajax渲染静态部分
- 用HTML+CSS编写一个计科院网站首页的静态网页
- ThinkPHP生成静态页buildHtml方法
- 问一个高深的问题,静态html页面如何接收来自服务器的参数?