zoukankan      html  css  js  c++  java
  • 循环队列

    circleQeueu.h 头文件

    #define MAXQSIZE 3
    #define OK 1
    #define ERROR 0
    typedef struct {

    int *base;
    int front;
    int rear;

    }Queue;

    typedef int Status;


    //初始化一个队列
    Status InitQueue(Queue *Q);

    //获取队列中元素的个数
    int QueueLength(Queue Q);

    //向队列队尾插入元素
    Status EnQueue(Queue *Q, int e);

    //删除队头元素
    Status DeQueue(Queue *Q,int *e);

    //查看队列中的所有元素
    Status QueueTraverse(Queue Q);

    ---------------------------------------------------------------------------------

    circleQeueu.c

    #include "stdio.h"
    #include "stdlib.h"
    #include "circleQueue.h"

    void main() {

    Queue Q;

    int length,e;

    //初始化队列
    InitQueue(&Q);

    EnQueue(&Q,1);
    EnQueue(&Q,2);

    //EnQueue(&Q,4);

    length = QueueLength(Q);

    //printf("%d ",length);

    QueueTraverse(Q);
    printf("删除对头元素 ");
    DeQueue(&Q,&e);

    QueueTraverse(Q);
    printf("插入元素 ");
    EnQueue(&Q, 3);
    QueueTraverse(Q);
    printf("删除对头元素 ");
    DeQueue(&Q, &e);
    printf("插入元素 ");
    EnQueue(&Q, 4);
    QueueTraverse(Q);

    }


    //初始化队列
    Status InitQueue(Queue *Q) {

    Q->base = (int *)malloc(MAXQSIZE*sizeof(int));//开辟一定长度的空间
    if (Q->base == NULL) exit(2);
    Q->front = Q->rear = 0;//下标从0开始

    return OK;
    }

    //获取队列中元素的个数
    int QueueLength(Queue Q) {

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

    }

    //向队列队尾插入元素
    Status EnQueue(Queue *Q, int e) {

    //判断队列是否已满
    //队尾指针始终指向队列尾元素的下一个元素(并没有物理意义上的满)
    if ((Q->rear + 1) % MAXQSIZE == Q->front) {
    printf("队列已满 ");
    return ERROR;
    }

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

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

    return OK;

    }

    //删除队头元素
    Status DeQueue(Queue *Q, int *e) {

    //队列为空
    if (Q->front == Q->rear) return ERROR;

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

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

    return OK;

    }


    Status QueueTraverse(Queue Q) {

    if (Q.front == Q.rear) {

    printf("队列为空 ");
    return OK;
    }
    while (Q.base[Q.front]!=NULL&&Q.front!=Q.rear)
    {
    printf("%d ",Q.base[Q.front]);
    Q.front = (Q.front + 1) % MAXQSIZE;

    }


    }

  • 相关阅读:
    Js中的正则表达式
    js内存泄露的几种情况
    JavaScript的setTimeout与setInterval执行时机
    IE模拟addDOMLoadEvent和jQuery的ready实现
    谈谈JavaScript的异步实现
    在iOS7中修改状态栏字体的颜色
    IOS 疯狂基础之 页面间跳转
    ATL2.1版的CString分析
    翻译: 如何改变MFC应用程序主窗口的类名
    VC5.0中的ATL的一个有趣的bug
  • 原文地址:https://www.cnblogs.com/paulversion/p/7662675.html
Copyright © 2011-2022 走看看