#include"stdio.h" #include"stdlib.h" typedef int ElementType; typedef struct Queue { int rear,front; ElementType *elements; int MaxSize; }Queue; void InitQueue(Queue *Q,int sz)//初始化 { Q->MaxSize=sz; Q->elements=(ElementType *)malloc(sizeof(ElementType)*Q->MaxSize); Q->front=Q->rear=0; } void freeQueue(Queue *Q,int sz)//释放空间 { free(Q->elements); } void MakeEmpty(Queue *Q)//置空 { Q->front=Q->rear=0; } int Length(Queue *Q)//返回长度 { return (Q->rear-Q->front+Q->MaxSize)%(Q->MaxSize); } int IsFull(Queue *Q)//判断是否为满 { if (Q->rear!=0&&(Q->front==(Q->rear)%(Q->MaxSize))) return 1; else return 0; } int IsEmpty(Queue *Q)//判断是否为空 { if(Q->front==Q->rear) return 1; else return 0; } void EnQueue(Queue *Q)//进队 { ElementType item; scanf("%d",&item); while((!IsFull(Q))&&(item!=-1)) { Q->elements[Q->rear]=item; Q->rear=(Q->rear+1)%(Q->MaxSize); scanf("%d",&item); } } ElementType DeQueue(Queue *Q) { ElementType item; if(!IsEmpty(Q)) { item=Q->elements[Q->front]; Q->front=(Q->front+1)%(Q->MaxSize); return item; } else { printf("对空! "); exit(1); } } ElementType GetFront(Queue *Q) { if(!IsEmpty(Q)) return Q->elements[Q->front]; else { printf("队空! "); exit(1); } } void main() { int i; Queue Q; InitQueue(&Q,10); EnQueue(&Q); for(i=0;i<10;i++) if(!IsEmpty(&Q)) printf("%-5d",DeQueue(&Q)); }
本文出自 “阿凡达” 博客,请务必保留此出处http://shamrock.blog.51cto.com/2079212/817866