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

xiaoxiao2021-02-28  138

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 100 typedef 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; }
转载请注明原文地址: https://www.6miu.com/read-97227.html

最新回复(0)