顺序队列的基本运算

顺序队列的定义

#include <stdio.h>
#define QueueSize 100

typedef 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");
}
Copyright © www.huweihuang.com 2017-2019 all right reserved,powered by GitbookUpdated at 2019-03-24 23:53:00

results matching ""

    No results matching ""