C语言数据结构——循环队列

来源:互联网 发布:js数字递增特效代码 编辑:程序博客网 时间:2024/05/19 17:04

1、若队列的最大尺寸为QueueSize,则队列满的条件是(rear+1)%Queue == Q.front;计算队列长度的公式是:(rear - front + QueueSize)%QueueSize
2、循环队列的顺序存储结构

#include<stdio.h>#include<stdlib.h>#include<math.h>#define OVERLOW -1#define FALSE 0#define ERROR 0#define OK 1#define TRUE 1#define QueueSize  100typedef int Status;typedef struct SqQueue{    int data[QueueSize];    int front;    int rear;}SqQueue;//构造一个空队列Status IninQueue(SqQueue &Q){    Q.front = 0;    Q.rear = 0;    return OK;  } //求队列的长度Status QueueLength(SqQueue &Q){    return ( Q.rear - Q.front + QueueSize )%QueueSize;    return OK;  } //若队列未满,在对尾插入元素,入队 Status EnQueue(SqQueue &Q,int e){    //如果队列是满的,则操作失败     if( (Q.rear + 1 ) % QueueSize == Q.front )        return ERROR;    Q.data[Q.rear] = e; //将e赋值给对尾    //rear向后移一位    Q.rear = ( Q.rear + 1 )%QueueSize;   //rear指针向后移一位     //若到最后则转到数组头部    return OK; }//若队列不为空,删除对头元素,并用e返回q其值Status DeQueue(SqQueue &Q,int *e){    if( Q.front == Q.rear )  //队列为空        return ERROR;    *e = Q.data[Q.front];  //将对头元素赋值给e    Q.front = ( Q.rear +1 )%QueueSize;  //front指针向后移一位    //若到最后则转到数组头部    return OK; } 
0 0
原创粉丝点击