- 顺序队列的基本运算
- 顺序队列的定义
- 初始化队列
- 入队运算
- 出队运算
- 取队头元素运算
- 判断队空运算
- main
顺序队列的基本运算
顺序队列的定义
#include <stdio.h>#define QueueSize 100typedef char ElemType;typedef struct { ElemType data[QueueSize]; /*保存队中元素*/ int front,rear; /*队头和队尾指针*/} SqQueue;
初始化队列
void InitQueue(SqQueue &qu) /*qu为引用型参数*/{ qu.rear=qu.front=0; /*指针初始化*/}
入队运算
int EnQueue(SqQueue &qu,ElemType x) /*入队运算,qu为引用型参数*/{ 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) /*出队运算,qu和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) /*取队头元素运算,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; else return 0;}
main
void 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");}