• 顺序队列的基本运算
    • 顺序队列的定义
    • 初始化队列
    • 入队运算
    • 出队运算
    • 取队头元素运算
    • 判断队空运算
    • main

    顺序队列的基本运算

    顺序队列的定义

    1. #include <stdio.h>
    2. #define QueueSize 100
    3. typedef char ElemType;
    4. typedef struct
    5. {
    6. ElemType data[QueueSize]; /*保存队中元素*/
    7. int front,rear; /*队头和队尾指针*/
    8. } SqQueue;

    初始化队列

    1. void InitQueue(SqQueue &qu) /*qu为引用型参数*/
    2. {
    3. qu.rear=qu.front=0; /*指针初始化*/
    4. }

    入队运算

    1. int EnQueue(SqQueue &qu,ElemType x) /*入队运算,qu为引用型参数*/
    2. {
    3. if ((qu.rear+1)%QueueSize==qu.front) /*队满*/
    4. return 0;
    5. qu.rear=(qu.rear+1)%QueueSize; /*队尾指针进1*/
    6. qu.data[qu.rear]=x;
    7. return 1;
    8. }

    出队运算

    1. int DeQueue(SqQueue &qu,ElemType &x) /*出队运算,qu和x为引用型参数*/
    2. {
    3. if (qu.rear==qu.front)
    4. return 0;
    5. qu.front=(qu.front+1)%QueueSize; /*队头指针进1*/
    6. x=qu.data[qu.front];
    7. return 1;
    8. }

    取队头元素运算

    1. int GetHead(SqQueue qu,ElemType &x) /*取队头元素运算,x为引用型参数*/
    2. {
    3. if (qu.rear==qu.front) /*队空*/
    4. return 0;
    5. x=qu.data[(qu.front+1)%QueueSize];
    6. return 1;
    7. }

    判断队空运算

    1. int QueueEmpty(SqQueue qu) /*判断队空运算*/
    2. {
    3. if (qu.rear==qu.front) /*队空*/
    4. return 1;
    5. else
    6. return 0;
    7. }

    main

    1. void main()
    2. {
    3. SqQueue qu;
    4. ElemType e;
    5. InitQueue(qu);
    6. printf("队%s\n",(QueueEmpty(qu)==1?"空":"不空"));
    7. printf("a进队\n");EnQueue(qu,'a');
    8. printf("b进队\n");EnQueue(qu,'b');
    9. printf("c进队\n");EnQueue(qu,'c');
    10. printf("d进队\n");EnQueue(qu,'d');
    11. printf("队%s\n",(QueueEmpty(qu)==1?"空":"不空"));
    12. GetHead(qu,e);
    13. printf("队头元素:%c\n",e);
    14. printf("出队次序:");
    15. while (!QueueEmpty(qu))
    16. {
    17. DeQueue(qu,e);
    18. printf("%c ",e);
    19. }
    20. printf("\n");
    21. }