数据结构循环队列的实现

78 阅读1分钟

#include<iostream> using namespace std; typedef int ElemType; typedef int Status; typedef struct{ int front; int rear; int maxSize; ElemType *element; }Queue; void Create(Queue *Q,int maxSize){ Q->maxSize=maxSize; Q->element=(ElemType *)malloc(sizeof(ElemType)*maxSize); Q->front=Q->rear=0; } void Destroy(Queue *Q){ Q->maxSize=-1; free(Q->element); Q->front=Q->rear=-1; } bool isEmpty(Queue *Q){ return Q->front==Q->rear; } bool isFull(Queue *Q){ return (Q->rear+1)%(Q->maxSize)==Q->front; } bool Front(Queue *Q,ElemType *x){ if(isEmpty(Q)) return false; *x=Q->element[(Q->front+1)%(Q->maxSize)]; return true; } bool EnQueue(Queue *Q,ElemType x){ if(isFull(Q)) return false; Q->rear=(Q->rear+1)%Q->maxSize; Q->element[Q->rear]=x; return true; } bool Dequeue(Queue *Q){ if(isEmpty(Q)) return false; Q->front=(Q->front+1)%Q->maxSize; return true; } void Clear(Queue *Q){ Q->front=Q->rear=0; } int main(){ int x,y; Queue q; Create(&q,10); for(int i=0;i<10;i++){ EnQueue(&q,i); } Front(&q,&x); cout<<"队头元素: "<<x<<endl; cout<<"队列元素: "; for(int j=0;j<9;j++){ Front(&q,&y); cout<<y<<" "; Dequeue(&q); } cout<<endl; return 0; }

本文使用 文章同步助手 同步