循环队列学习

#include<stdio.h>
#include<stdlib.h>
#define MAX_QSIZE 5
typedef int ElemType;
typedef struct {
  ElemType *base;
  int front;
  int rear;
}CSqQueue;
//初始化循环队列
int InitCSqQueue(CSqQueue &Q){
  Q.base=(ElemType *)malloc(sizeof(ElemType));
  Q.front=Q.rear=0;
  return 0;
}
//插入元素
int EnCSqQueue(CSqQueue &Q,ElemType e){
   if((Q.rear+1)%MAX_QSIZE==Q.front) 
      return -1;
      Q.base[Q.rear]=e;
      Q.rear=(Q.rear+1)%MAX_QSIZE;
      return 0;
}
//清空循环队列
int ClearQueue(CSqQueue &Q){
	Q.front=Q.rear=0;
	return 0;
}
//循环队列的长度
int LengthQueue(CSqQueue Q)
{ 
  return (Q.rear-Q.front+MAX_QSIZE)%MAX_QSIZE;
}
//删除元素
int  DeQueue(CSqQueue &Q,ElemType &e)
{ 
 if(Q.front==Q.rear)
    return -1;
  e=Q.base[Q.front];
  Q.front=(Q.front+1)%MAX_QSIZE;
    return e;
}
//得到元素
int  GetQueue(CSqQueue Q,ElemType &e)
{ 
  if(Q.front==Q.rear)
    return -1;
  e=Q.base[Q.front];
    return e;
}
//判空
int EmptyQueue(CSqQueue Q)
{ 
   if(Q.front==Q.rear)
	   return 1;
   else
       return 0;
}
int main(){
 CSqQueue Q;
 int i,e;
 InitCSqQueue(Q);
 printf("%d ", EmptyQueue(Q));
 EnCSqQueue(Q,1);
 EnCSqQueue(Q,2);
 EnCSqQueue(Q,3);
 printf("\n");
 printf("%d ",LengthQueue(Q));
 printf("\n");
 GetQueue(Q,e);
 printf("%d ",e);
 printf("\n");
 DeQueue(Q,e);
 printf("%d",e);
 printf("\n");
 for(i=Q.front;i<Q.rear;i++){
	 printf("%d ",Q.base[i]);
 }
  printf("\n");
  ClearQueue(Q);
  printf("%d ", EmptyQueue(Q));
 return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值