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



  • 相关阅读:
    lsblk---列出所有可用块设备的信息,
    blkid---对系统块设备信息查询
    du---是对文件和目录磁盘使用的空间查看
    strings---对象文件或二进制文件中查找可打印的字符串
    which---查找并显示给定命令的绝对路径
    whereis---定位指令的二进制程序、源代码文件和man手册页等相关文件的路径。
    cd---切换工作目录
    cp---复制文件
    ls---显示文件目录各项信息
    pwd---以绝对路径的方式显示用户当前工作目录
  • 原文地址:https://www.cnblogs.com/pang123hui/p/2309940.html
Copyright © 2011-2022 走看看