您的位置:首页 > 理论基础 > 数据结构算法

数据结构---队列---循环队列---顺序存储

2017-06-21 11:15 337 查看
#include<iostream>

#include<stdio.h>

#include<stdlib.h>

using namespace std;

#define OK 1

#define ERROR 0

#define TRUE 1

#define FALSE 0

#define MAXSIZE 10

typedef int Status;

typedef int QElemType;

typedef struct

{

    QElemType data[MAXSIZE];

    int front;

    int rear;

}SqQueue;

Status InitQueue(SqQueue *Q)

{

    Q->front = 0;

    Q->rear = 0;

    

    return OK;

}

int QueueLength(SqQueue Q)

{

    return (Q.rear-Q.front + MAXSIZE ) % MAXSIZE;

}

Status EnQueue(SqQueue *Q,QElemType e)

{

    if((Q->rear+1)% MAXSIZE == Q->front)

        return ERROR;

    Q->data[Q->rear] = e;

    Q->rear = (Q->rear+1) % MAXSIZE;

    return OK;

}

Status DeQueue(SqQueue *Q,QElemType *e)

{

    if(Q->front == Q->rear)

        return ERROR;

    *e = Q->data[Q->front];

     Q->front = (Q->front+1) % MAXSIZE;

    return OK;

}

int main()

{

    SqQueue *Q = (SqQueue *)malloc(sizeof(SqQueue));

    InitQueue(Q);

    EnQueue(Q,1);

    EnQueue(Q,2);

    EnQueue(Q,3);

    EnQueue(Q,4);

    QElemType *e = (QElemType *)malloc(sizeof(QElemType));

    

    DeQueue(Q,e);

    printf("de-%d\n",*e);

    int a;

    a=QueueLength(*Q);

    printf("len=%d\n",a);

    free(e);

    

    return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: