顺序队列(循环)

论坛 期权论坛 脚本     
匿名网站用户   2020-12-19 18:41   11   0

对循环队列的操作
void initQueue(SeqQueue *q);//栈的初始化
void clearQueue(SeqQueue *q);//清除队中所有的元素
bool queueEmpty(SeqQueue *q);//判断队是否为空
bool queueFull(SeqQueue *q);//判断是否队满
int getQueue(SeqQueue *q,DataType *e);//获取队头元素
int deQueue(SeqQueue *q,DataType *e);//出队
int enQueue(SeqQueue *q,DataType e);//在队中添加一个元素
int queueLength(SeqQueue *s);//求队的长度

队列的存储结构

typedef struct{
 DataType data[QUEUESIZE];
 int front;//队头指针 
 int rear;//队尾指针 
}SeqQueue;

void initQueue(SeqQueue *q);//栈的初始化

void initQueue(SeqQueue *q)//栈的初始化 
{
 q->front = 0;
 q->rear = 0;
}

void clearQueue(SeqQueue *q);//清除队中所有的元素

void clearQueue(SeqQueue *q)//清除队中所有的元素
{
 q->front = 0;
 q->rear = 0;
}

bool queueEmpty(SeqQueue *q);//判断队是否为空

bool queueEmpty(SeqQueue *q)//判断队是否为空
{
 return q->front == q->rear;
}

bool queueFull(SeqQueue *q);//判断是否队满

bool queueFull(SeqQueue *q)//判断是否队满
{
 return q->front == (q->rear+1)%QUEUESIZE;
}

int getQueue(SeqQueue *q,DataType *e);//获取队头元素

int getQueue(SeqQueue *q,DataType *e)//获取队头元素
{
 if(!queueEmpty(q))
 *e = q->data[q->front];
}

int deQueue(SeqQueue *q,DataType *e);//出队

int deQueue(SeqQueue *q,DataType *e)//出队
{
 if(!queueEmpty(q)){
  *e = q->data[q->front];
  q->front = (q->front+1)%QUEUESIZE;
 }
}

int enQueue(SeqQueue *q,DataType e);//在队中添加一个元素

int enQueue(SeqQueue *q,DataType e)//在队中添加一个元素
{
 if(!queueFull(q)){
  q->data[q->rear] = e;
  q->rear = (q->rear+1)%QUEUESIZE;
 } 
}

int queueLength(SeqQueue *s);//求队的长度,有公式

int queueLength(SeqQueue *q)//求队的长度
{
 return (q->rear-q->front+QUEUESIZE)%QUEUESIZE;
}
#include <bits/stdc++.h>
#define QUEUESIZE 100
typedef int DataType;
typedef struct{
 DataType data[QUEUESIZE];
 int front;//队头指针 
 int rear;//队尾指针 
}SeqQueue;

void initQueue(SeqQueue *q);//栈的初始化 
void clearQueue(SeqQueue *q);//清除队中所有的元素 
bool queueEmpty(SeqQueue *q);//判断队是否为空 
bool queueFull(SeqQueue *q);//判断是否队满
int getQueue(SeqQueue *q,DataType *e);//获取队头元素 
int deQueue(SeqQueue *q,DataType *e);//出队
int enQueue(SeqQueue *q,DataType e);//在队中添加一个元素
int queueLength(SeqQueue *s);//求队的长度 

int main()
{
 SeqQueue sq;
 initQueue(&sq);
 for(int i = 0;i < 5;i++){
  enQueue(&sq,i);
 }
 int len = queueLength(&sq);
 printf("%d\n",len); 
 if(queueEmpty(&sq)){
  printf("队列为空");
 }else {
  for(int i = 0;i < 4;i++){
   int n;
   deQueue(&sq,&n);
   printf("%d\n",n);
  }
 }
 clearQueue(&sq);
 return 0;
}

int queueLength(SeqQueue *q)//求队的长度
{
 return (q->rear-q->front+QUEUESIZE)%QUEUESIZE;
} 
int enQueue(SeqQueue *q,DataType e)//在队中添加一个元素
{
 if(!queueFull(q)){
  q->data[q->rear] = e;
  q->rear = (q->rear+1)%QUEUESIZE;
 } 
}
int deQueue(SeqQueue *q,DataType *e)//出队
{
 if(!queueEmpty(q)){
  *e = q->data[q->front];
  q->front = (q->front+1)%QUEUESIZE;
 }
}
int getQueue(SeqQueue *q,DataType *e)//获取队头元素
{
 if(!queueEmpty(q))
 *e = q->data[q->front];
}
bool queueFull(SeqQueue *q)//判断是否队满
{
 return q->front == (q->rear+1)%QUEUESIZE;
}
bool queueEmpty(SeqQueue *q)//判断队是否为空
{
 return q->front == q->rear;
}
void initQueue(SeqQueue *q)//栈的初始化 
{
 q->front = 0;
 q->rear = 0;
}
void clearQueue(SeqQueue *q)//清除队中所有的元素
{
 q->front = 0;
 q->rear = 0;
}
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1136255
帖子:227251
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP