//  main.cpp

#include <iostream>

using namespace std;

#include "Status.h"

typedef int QElemType;

#include "SqQueue.h"

int main()

{

SqQueue Q;

QElemType e;

InitQueue(Q);

EnQueue(Q,1);

EnQueue(Q,3);

EnQueue(Q,5);

EnQueue(Q,7);

cout<<"\n队头元素为:"<<GetHead(Q,e)<<endl;

cout<<"\n队列中从队头至队尾的元素为:";

QueueTraverse(Q);

cout<<"\n队列的长度为:"<<QueueLength(Q)<<endl;

DeQueue(Q,e);

cout<<"\n出队的元素为:"<<e<<endl;

cout<<"\n出队操作完成之后队列中从队头至队尾的元素为:";

QueueTraverse(Q);

cout<<"\n队列的长度为:"<<QueueLength(Q)<<endl;

return 0;

}

//  Status.h

#ifndef yuan_Status_h

#define yuan_Status_h

#define TRUE 1

#define FALSE 0

#define OK 1

#define ERROR 0

#define INFEASIBLE -1

#define OVERFLOW -2

typedef int Status;

#endif

//  SqQueue.h

#ifndef Y_Y_SqQueue_h

#define Y_Y_SqQueue_h

#define MAXQSIZE 100

typedef struct{

QElemType *base;

int front;

int rear;

}SqQueue;

Status InitQueue(SqQueue &Q)

{

Q.base=new QElemType[MAXQSIZE];

if(!Q.base)  exit(OVERFLOW);

Q.front=Q.rear=0;

return OK;

}

Status GetHead(SqQueue Q,QElemType e)

{

e=Q.base[Q.front];

return e;

}

Status QueueLength(SqQueue Q)

{

return (Q.rear-Q.front+MAXQSIZE)%MAXQSIZE;

}

Status EnQueue(SqQueue &Q,QElemType e)

{

if ((Q.rear+1)%MAXQSIZE==Q.front) return ERROR;  //尾指针在循环意义上加1后等于头指针,表示满队

Q.base[Q.rear]=e;

Q.rear=(Q.rear+1)%MAXQSIZE;

return OK;

}

Status DeQueue(SqQueue &Q,QElemType &e)

{

if (Q.front==Q.rear) return ERROR;

e=Q.base[Q.front];

Q.front=(Q.front+1)%MAXQSIZE;

return OK;

}

void QueueTraverse(SqQueue Q)

{

int i;

i=Q.front;

while(i!=Q.rear)

{

cout<<Q.base[i]<<"  ";

i=(i+1)%MAXQSIZE;

}

cout<<endl;

}

#endif

D_S 循环队列的基本操作的更多相关文章

  1. STL-queue和循环队列基本操作的实现

    2018-11-13-17:53:44 1.可增长循环队列 队列是一种特殊的线性表,是一种先进先出(FIFO)的数据结构.它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入 ...

  2. Java实现循环队列

    一.分析 队列是一种先进先出的线性表,它只允许在表的一端进行插入,而在另一端删除元素.允许插入的一端称为队尾,允许删除的一端称为队头. 循环队列是一种以顺序存储结构表示的队列,为了解决“假溢出”问题而 ...

  3. C ~ 链式队列与循环队列

          此处的链式与循环队列可以应用于BFS和树的层序遍历.下面是对其结构和基本操作的程序描述. 1.循环队列 解决循环队列的队空和队满的方法: [1].增加一个参数count,用来记录数组中当前 ...

  4. 数据结构Java实现07----队列:顺序队列&顺序循环队列、链式队列、顺序优先队列

    一.队列的概念: 队列(简称作队,Queue)也是一种特殊的线性表,队列的数据元素以及数据元素间的逻辑关系和线性表完全相同,其差别是线性表允许在任意位置插入和删除,而队列只允许在其一端进行插入操作在其 ...

  5. 数据结构java学习(三)循环队列

    @TOC 和栈一样,队列也是表,但是使用队列的特点是先进先出. 队列模型 \(\color{black}{队列的基本操作是入队,它是在表的末端插入一个元素,和出队,它是删除在表开头的一个元素}\) g ...

  6. 数据结构----队列:顺序队列&顺序循环队列、链式队列、顺序优先队列

    一.队列的概念: 队列(简称作队,Queue)也是一种特殊的线性表,队列的数据元素以及数据元素间的逻辑关系和线性表完全相同,其差别是线性表允许在任意位置插入和删除,而队列只允许在其一端进行插入操作在其 ...

  7. C++数组实现的循环队列

    #include<iostream> #include <string> /* 功能:数组实现的循环队列,C++实现,学习参考 */ using namespace std; ...

  8. 数据结构算法C语言实现(十二)--- 3.4循环队列&队列的顺序表示和实现

    一.简述 空队列的处理方法:1.另设一个标志位以区别队列是空还是满:2.少用一个元素空间,约定以队列头指针在队尾指针下一位置上作为队列呈满的状态的标志. 二.头文件 //3_4_part1.h /** ...

  9. 使用 JavaScript 实现基本队列、优先队列和循环队列

    1.基本队列的实现 基本队列的方法中,包含了 ①向队列(尾部)中添加元素(enqueue).②(从队列头部)删除元素(dequeue).③查看队列头部的元素(front).④查看队列是否为空(isEm ...

随机推荐

  1. Python基础:新式类的属性访问

    一.概述 二.准备工作 1.讨论对象 2.名词解释 三.实例绑定的属性访问 1.获取属性 一般规则 参考源码 示例验证 2.设置属性 一般规则 参考源码 示例验证 3.删除属性 一般规则 参考源码 示 ...

  2. sencha gridpanel checkbox 复选框的勾选 以及和单机行冲突

    gridpanel显示checkbox: 添加SelectionModel为Checkbox Selection Model { xtype: 'gridpanel', id: 'Grid1', he ...

  3. c#重点[集合类型]异常,数组,集合ArrayList,List<>,hashTable,hashtable泛型(Dictionary)

    1.foreach[对一些数组或集合进行遍历] foreach(类型 变量名 in 集合对象){语句体} //定义一个数组 ,,,,, }; foreach(var i in sNum1) { Con ...

  4. Fluent NHibernate and Mysql,SQLite,PostgreSQL

    http://codeofrob.com/entries/sqlite-csharp-and-nhibernate.html https://code.google.com/archive/p/csh ...

  5. FreeBSD10上编译尝试DeepIn UI

    经历了两百多次命令的输入尝试,终于搞定. 1 git clone https://github.com/linuxdeepin/deepin-ui.git 11 git clone https://g ...

  6. fibonacci数列从a到b的个数

    Description 我们定义斐波那契数列如下: f1=1 f2=2 f(n)=f(n-1)+f(n-2)(n>=3)   现在,给定两个数a和b,计算有多少个斐波那契数列中的数在a和b之间( ...

  7. [moka同学笔记]Yii2.0 dropDownList的使用(二)

    方法一: <?php $psObjs = Poststatus::find()->all(); $allStatus = ArrayHelper::map($psObjs,'id','na ...

  8. C语言回滚(二)--循环打印

    //1.用循环打印 /* FFEFEDFEDCFEDCBFEDCBA */ #include <stdio.h> #include<stdlib.h> int main(){ ...

  9. 【poj 2185】Milking Grid(字符串--KMP+问题分解)

    题意:给定一个由字符组成的矩阵,求出它的面积最小的覆盖矩阵.(感觉应该是可重叠的......* (・ω・)っ) 解法:KMP.行列互不影响,可以问题分解.先求出每一行的最小重复串,利用kmp中的nex ...

  10. 记录php日志

    1.记录PHP错误日志 display_errors与log_errors的区别 display_errors 错误回显,一般常用于开发模式,但是很多应用在正式环境中也忘记了关闭此选项.错误回显可以暴 ...