• 队列


    #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;
    }
    }



  • 相关阅读:
    JAVA多线程实现和应用总结
    大话程序猿眼里的高并发
    重写Dijkstra
    再做一遍floyed
    优美的二分模型
    ACwing : 798. 差分矩阵
    ACwing_789. 数的范围
    快速排序超级强的模板
    1829:【02NOIP提高组】自由落体
    【02NOIP提高组】均分纸牌
  • 原文地址:https://www.cnblogs.com/pang123hui/p/2309940.html
Copyright © 2020-2023  润新知