zoukankan      html  css  js  c++  java
  • 队列

    #include <stdio.h>  
    #include "queue.h"


    int main(void)
    {
    SqQueue qu;
    ElemType e;

    InitQueue(&qu);
    printf("栈%s/n", (QueueEmpty(qu) == 0 ? "" : "不空"));
    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))) //栈空返回0,否则返回-1
    {
    DeQueue(&qu, &e);
    printf("%c ", e);
    }
    printf("/n");

    return 0;
    }


    [cpp] view plaincopyprint?
    #ifndef QUEUE
    #define QUEUE

    #define QueueSize 100
    typedef char ElemType ;

    typedef struct
    {
    ElemType data[QueueSize];
    int front, rear;
    }SqQueue;

    void InitQueue(SqQueue *qu); //初始化队列

    int EnQueue(SqQueue *qu, ElemType x); //进队列算法

    int DeQueue(SqQueue *qu, ElemType *x); //出队列算法

    int GetHead(SqQueue qu, ElemType *x); //取对头元素

    int QueueEmpty(SqQueue qu); //判断对空算法



    #endif


    [cpp] view plaincopyprint?
    #include <stdio.h>
    #include "queue.h"

    /************************************************
    ** 函数名:void InitQueue(SqQueue *qu)
    ** 功能: 初始化队列
    ** 描述: 无
    ** 作者: 庞辉
    ************************************************
    */

    void InitQueue(SqQueue *qu)
    {
    qu->front = qu->rear = 0;
    }

    /************************************************
    ** 函数名:int EnQueue(SqQueue *qu, ElemType x)
    ** 功能: 进队列算法
    ** 描述: 队满返回-1
    ** 作者: 庞辉
    ************************************************
    */

    int EnQueue(SqQueue *qu, ElemType x)
    {
    if((qu->rear + 1) % QueueSize == qu->front)
    {
    return -1;
    }
    else
    {
    qu->rear = (qu->rear + 1) % QueueSize;
    qu->data[qu->rear] = x;

    return 0;
    }
    }

    /************************************************
    ** 函数名:int DeQueue(SqQueue *qu, ElemType *x)
    ** 功能: 出队列算法
    ** 描述: 队空返回-1
    ** 作者: 庞辉
    ************************************************
    */

    int DeQueue(SqQueue *qu, ElemType *x)
    {
    if(qu->rear == qu->front)
    {
    return -1;
    }
    else
    {
    qu->front = (qu->front + 1) % QueueSize;
    *x = qu->data[qu->front];

    return 0;
    }
    }

    /************************************************
    ** 函数名:int GetHead(SqQueue *qu, ElemType *x)
    ** 功能: 取对头元素
    ** 描述: 队空返回-1
    ** 作者: 庞辉
    ************************************************
    */

    int GetHead(SqQueue qu, ElemType *x)
    {
    if(qu.front == qu.rear)
    {
    return -1;
    }
    else
    {
    *x = qu.data[(qu.front + 1) % QueueSize];
    return 0;
    }
    }

    /************************************************
    ** 函数名:int QueueEmpty(SqQueue qu)
    ** 功能: 判断对空算法
    ** 描述: 队空返回-1,否则返回0
    ** 作者: 庞辉
    ************************************************
    */

    int QueueEmpty(SqQueue qu)
    {
    if(qu.rear == qu.front)
    {
    return -1;
    }
    else
    {
    return 0;
    }
    }



  • 相关阅读:
    spark 读取mongodb失败,报executor time out 和GC overhead limit exceeded 异常
    在zepplin 使用spark sql 查询mongodb的数据
    Unable to query from Mongodb from Zeppelin using spark
    spark 与zepplin 版本兼容
    kafka 新旧消费者的区别
    kafka 新生产者发送消息流程
    spark ui acl 不生效的问题分析
    python中if __name__ == '__main__': 的解析
    深入C++的new
    NSSplitView
  • 原文地址:https://www.cnblogs.com/pang123hui/p/2309940.html
Copyright © 2011-2022 走看看