循环队列的常用操作(初始化,判断…

#include
#include

typedef struct Queue
{
      int *pBase;
      int front;
      int rear;
}QUEUE, *PQUEUE ;

void init_queue(PQUEUE);//初始化队列
void full_queue(PQUEUE);//判断队列是否已满
void en_queue(PQUEUE, int);//入队
void is_empty_queue(PQUEUE);//判断队列是否为空
void traverse_queue(PQUEUE);//遍历队列
void out_queue(PQUEUE);//出队


int main(int argc, const char * argv[])
{
      QUEUE q;
     
      init_queue(&q);
     
      en_queue(&q, 1);
      en_queue(&q, 2);
      en_queue(&q, 3);
      en_queue(&q, 4);
      en_queue(&q, 5);
      //en_queue(&q, 6);
      //en_queue(&q, 7);
      traverse_queue(&q);
     
      out_queue(&q);
      traverse_queue(&q);
     
      return 0;
}

//初始化队列
void init_queue(PQUEUE pQ)
{
      pQ->pBase = (int *)malloc(sizeof(int)*6);
      pQ->front = 0;
      pQ->rear = 0;
     
      return;
}


//判断队列是否已满
void full_queue(PQUEUE pQ)
{
      if ((pQ->rear + 1) % 6 == pQ->front) {
             
              printf("队列已满!!!\n");
             
              exit(-1);
      }
     
      return;
}


//入队
void en_queue(PQUEUE pQ,int val)
{
      full_queue(pQ);
     
      pQ->pBase[pQ->rear] = val;
      pQ->rear = (pQ->rear + 1) %6;
     
      return;
}


//判断队列是否为空
void is_empty_queue(PQUEUE pQ)
{
      if (pQ->front == pQ->rear) {
             
              printf("队列为空!!!\n");
              exit(-1);
      }
     
      return;
}


//遍历队列
void traverse_queue(PQUEUE pQ)
{
      is_empty_queue(pQ);
     
      printf("遍历结果为:");
     
      int i = pQ->front;
     
      while (i != pQ->rear) {
             
              printf("%d ",pQ->pBase[i]);
              i = (i+1) % 6;
      }
      printf("\n");
     
      return;
}


//出队
void out_queue(PQUEUE pQ)
{
      is_empty_queue(pQ);
     
      int val;
     
      val = pQ->pBase[pQ->front];
      pQ->front = (pQ->front+1) % 6;
     
      printf("元素%d出对\n",val);
     
      return;
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值