###### 经典的数据结构——循环队列

 front = ( front + 1) % MAX;
 rear = ( rear + 1) % MAX;

#include <QCoreApplication>
#include <iostream>

using namespace std;

#include <stdio.h>
#include <stdlib.h>

#include <stdio.h>

#define MAX 5

/*Declaration of circular queue.*/
typedef struct
{
int front   ;
int rear    ;
int count   ;
int ele[MAX]    ;
}CirQueue;

/*Initailization of circular queue.*/
void initCirQueue(CirQueue * q)
{
q->front =  0;
q->rear  = -1;
q->count =  0;
}

/*Check Queue is full or not*/
int isFull(CirQueue * q)
{
int full=0;

if(q->count == MAX)
full = 1;

return full;
}

/*Check Queue is empty or not*/
int isEmpty(CirQueue * q)
{
int empty=0;

if(q->count == 0)
empty = 1;

return empty;
}

/*To insert item into circular queue.*/
void insertCirQueue(CirQueue * q, int item)
{
if( isFull(q) )
{
printf("\nQueue Overflow");
return;
}

q->rear = (q->rear+1)%MAX;
q->ele[q->rear] = item;

q->count++;

printf("\nInserted item : %d",item);
}

/*To delete item from queue.*/
int deleteCirQueue(CirQueue * q, int *item)
{
if( isEmpty(q) )
{
printf("\nQueue Underflow");
return -1;
}

*item    = q->ele[q->front];

q->front = (q->front+1)%MAX;

q->count--;

return 0;
}

int main()
{
int item=0;
CirQueue q;

initCirQueue(&q);

insertCirQueue(&q, 10);
insertCirQueue(&q, 20);
insertCirQueue(&q, 30);
insertCirQueue(&q, 40);
insertCirQueue(&q, 50);
insertCirQueue(&q, 60);

if ( deleteCirQueue( &q, &item ) == 0 )
printf("\nDeleted item is : %d",item);

if ( deleteCirQueue( &q, &item ) == 0 )
printf("\nDeleted item is : %d",item);

if ( deleteCirQueue( &q, &item ) == 0 )
printf("\nDeleted item is : %d",item);

if ( deleteCirQueue( &q, &item ) == 0 )
printf("\nDeleted item is : %d",item);

if ( deleteCirQueue( &q, &item ) == 0 )
printf("\nDeleted item is : %d",item);

insertCirQueue(&q, 60);

if ( deleteCirQueue( &q, &item ) == 0 )
printf("\nDeleted item is : %d",item);

if ( deleteCirQueue( &q, &item ) == 0 )
printf("\nDeleted item is : %d",item);

printf("\n");
return 0;
}

-----------------

#### 数据结构——循环队列存储结构以及实现

2016-10-30 05:25:59

#### 循环队列打印Fibonacci

2010年11月13日 713KB 下载

#### 数据结构-循环队列的基本操作

2017-11-01 15:28:35

#### 【c++版数据结构】之循环队列的实现

2015-11-12 17:01:59

#### 数据结构 循环队列c++源代码

2008年11月25日 2KB 下载

#### JAVA数据结构之循环队列的实现

2017-07-07 11:18:03

#### 数据结构（十一）循环队列的基本操作----6个基本操作

2017-01-01 13:32:52

#### 数据结构中循环队列的清空、销毁、求队长、遍历、取首元素等操作及运用

2016-11-03 18:53:19

#### 数据结构（三）——队列及实现、循环队列实现

2011-09-17 17:03:50

#### 数据结构：循环队列（C语言实现）

2014-03-07 19:15:06