循环队列学习

来源:互联网 发布:传智播客c语言讲义 编辑:程序博客网 时间:2024/05/18 03:47
#include<stdio.h>#include<stdlib.h>#define MAX_QSIZE 5typedef 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;}

0 0
原创粉丝点击