进击的数据结构之六队列的基本操作-顺序结构

来源:互联网 发布:中国全面战争动员 知乎 编辑:程序博客网 时间:2024/05/29 07:00
#include "stdio.h"    #include "stdlib.h"   #include "io.h"  #include "math.h"  #include "time.h"#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define MAXSIZE 20 /* 存储空间初始分配量 */typedef int Status; typedef int QElemType; /* QElemType类型根据实际情况而定,这里假设为int *//* 循环队列的顺序存储结构 */typedef struct{QElemType date[MAXSIZE];int front;    /* 头指针 */int rear;/* 尾指针,若队列不空,指向队列尾元素的下一个位置 */}SqQueue;Status InitQueue(SqQueue *Q){  Q->front=0;  Q->rear=0;  return 1;}Status ClearQueue(SqQueue *Q){  Q->front=0;  Q->rear=0;  return 1;}Status QueneEmpty(SqQueue Q){  if(Q.front==Q.rear)     return 1;  return 0;}     Status GetHead(SqQueue Q,QElemType &e){   if(QueneEmpty(Q))     return 0;   e=Q.date[Q.front];   return 1;}Status EnQueue(SqQueue *Q,QElemType e){  if((Q->rear+1)%MAXSIZE==Q->front)    return 0;  Q->date[Q->rear]=e;  Q->rear=(Q->rear+1)%MAXSIZE;  return 1;      }Status DeQueue(SqQueue *Q,QElemType &e){ if( QueneEmpty(*Q))   return 0; e=Q->date[Q->front]; Q->front=(Q->front+1)%MAXSIZE; return 1;}int  QueueLength(SqQueue Q){ return ((Q.rear-Q.front+MAXSIZE)%MAXSIZE);       }Status QueueTraverse(SqQueue Q){   int i,e;  if (QueneEmpty(Q))   return 0;  while(!QueneEmpty(Q))   {    GetHead(Q,e);    printf("%d\n",e);    Q.front=(Q.front+1)%MAXSIZE;  }      }

原创粉丝点击