//隊列順序結構的基本操作:
#include"stdio.h"
#include"String"
#define QueueSize 100
typedef char ElemType;
typedef struct
{ ElemType data[QueueSize]; /*保存隊中元素*/int front,rear; /*隊頭和隊尾指針*/
} SqQueue;
void InitQueue(SqQueue &qu)
{qu.rear=qu.front=-1; /*指針初始化*/
}
int EnQueue(SqQueue &qu,ElemType x)
{if ((qu.rear+1)%QueueSize==qu.front) /*隊滿*/{return 0;}qu.rear=(qu.rear+1)%QueueSize; /*隊尾指針進1*/qu.data[qu.rear]=x;return 1;
}
int DeQueue(SqQueue &qu,ElemType &x) /*出隊運算*/
{if (qu.rear==qu.front)return 0;qu.front=(qu.front+1)%QueueSize; /*隊頭指針進1*/x=qu.data[qu.front];return 1;
}
int GetHead(SqQueue qu,ElemType &x) /*取隊頭元素運算*/
{if (qu.rear==qu.front) /*隊空*/return 0;x=qu.data[(qu.front+1)%QueueSize];return 1;
}
int QueueEmpty(SqQueue qu) /*判斷隊空運算*/
{if (qu.rear==qu.front) /*隊空*/return 1;elsereturn 0;
}
int main()
{ SqQueue qu;ElemType e;InitQueue(qu);printf("隊%s\n",(QueueEmpty(qu)==1?"空":"不空"));printf("a進隊\n");EnQueue(qu,'a');printf("b進隊\n");EnQueue(qu,'b');printf("c進隊\n");EnQueue(qu,'c');printf("d進隊\n");EnQueue(qu,'d');printf("隊%s\n",(QueueEmpty(qu)==1?"空":"不空"));GetHead(qu,e);printf("隊頭元素:%c\n",e);printf("出隊次序:");while (!QueueEmpty(qu)){ DeQueue(qu,e);printf("%c ",e);}printf("\n");return 0;
}
運行結果: