顺序队列的基本操作

#include <stdio.h>
#include <stdlib.h>
//#include <iostream>
#define MAXSIZE 100
#define OK 1
#define TRUE 1
#define FALSE 0
#define ERROR 0

//using namespace std;

typedef struct
{
    int data[MAXSIZE];
    int front;      // 头指针
    int rear;       //尾指针
}SqQueue;

int initQueue(SqQueue &Q);//初始化队列
int ClearQueue(SqQueue &Q);//清空队列
int QueueEmpty(SqQueue Q);//判断队空
int QueueLength(SqQueue Q);//取队列长度
int GetheadQueue(SqQueue Q,int &e);//取队列对头元素
int InQueue(SqQueue &Q,int x);//入队操作
int DeQueue(SqQueue &Q);//出队操作
int QueueTraverse(SqQueue Q);//遍历队列


int main()
{
    printf("Hello World!
");

    SqQueue Q;
    int m;
    int i,leng;
    int kk,flag;
    initQueue(Q);
    printf("入队顺序:
");
    for(i=1;i<=10;i++)
    {
        InQueue(Q,i);//入队
        printf("%d ",i);
    }
    printf("
");
    flag=QueueEmpty(Q);
    leng=QueueLength(Q);
    if(flag==1)
        printf("队列空,队列长度为: 0
");
    else
        printf("队列不空,队列长度为:%d
",leng);

    QueueTraverse(Q);//遍历队列

    flag=QueueEmpty(Q);
    leng=QueueLength(Q);
    if(flag==1)
        printf("队列空,队列长度为: 0
");
    else
        printf("队列不空,队列长度为:%d
",leng);

    GetheadQueue(Q,m);
    printf("队列顶部元素为:%d
",m);

    for(i=0;i<10;i++)
    {
        kk=DeQueue(Q);
        printf("%d ",kk);//出队
    }

    ClearQueue(Q);
    printf("
");
    flag=QueueEmpty(Q);
    leng=QueueLength(Q);
    if(flag==1)
        printf("队列空,队列长度为: 0
");
    else
        printf("队列不空,队列长度为:%d
",leng);

    return 0;
}


int initQueue(SqQueue &Q)//初始化队列
{
    Q.front=0;
    Q.rear=0;
    return OK;
}

int ClearQueue(SqQueue &Q)//清空队列
{
    Q.front=Q.rear=0;
    return OK;
}

int QueueEmpty(SqQueue Q)//判断队空
{
    if(Q.front==Q.rear)
        return TRUE;
    else
        return FALSE;
}

int QueueLength(SqQueue Q)//取队列长度
{
    return(Q.rear-Q.front+MAXSIZE)%MAXSIZE;
}

int GetheadQueue(SqQueue Q,int &e)//取队列对头元素
{
    if(Q.front==Q.rear)
        return ERROR;
    e=Q.data[Q.front];
    return OK;
}

int InQueue(SqQueue &Q,int x)//入队操作
{
    if(Q.front==MAXSIZE)
        printf("溢出!
");
    else
    {
        Q.data[Q.rear]=x;
        (Q.rear)++;
    }
    return 1;
}

int DeQueue(SqQueue &Q)//出队操作
{
    int x;
    if(Q.front==Q.rear)
        printf("下溢出!
");
    else
    {
        x=Q.data[Q.front];
        (Q.front)++;    //front指针后移
    }
    return x;
}

int QueueTraverse(SqQueue Q)//遍历队列
{
    int i;
    i=Q.front;
    while(i!=Q.rear)
    {
        printf("%d ",Q.data[i]);
        i=(i+1)%MAXSIZE;
    }
    printf("
");
    return OK;
}

请dalao不吝赐教。
原文地址:https://www.cnblogs.com/liesun/p/7350342.html