队列是一种只允许在队尾插入元素,在队头插入元素的一种数据结构。就比如我们生活中的排队。队列最主要的是判断队空或者队满。队列的静态方式实现,利用数组设置一个循环的队列。代码如下:

#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;}

更多相关文章

  1. 队列(链式)
  2. 数据结构与算法(5)队列
  3. 小程序静态资源如何设置防盗链?
  4. 静态h5页面没有后台直接访问本地json文件
  5. Jquery中的队列函数quene()、dequene()、clearQuene()
  6. 在Rails 3中通过.ajax渲染静态部分
  7. 用HTML+CSS编写一个计科院网站首页的静态网页
  8. ThinkPHP生成静态页buildHtml方法
  9. 问一个高深的问题,静态html页面如何接收来自服务器的参数?

随机推荐

  1. Android Studio JNI开发
  2. android:layout_marginLeft与android:pad
  3. Android 判断是否打开移动网络开关
  4. Android SDK手动升级到Android 5.0(API L
  5. linux下通过命令行更新android sdk
  6. android中listview中去除背景色选中色
  7. Android7.0中文文档(API)-- SimpleExpandab
  8. 对view设置透明度
  9. [置顶] Android Studio编译
  10. android listview的高度