zoukankan      html  css  js  c++  java
  • 线性表(队列)

    队列是一种操作受限的线性表,插入(入队)的一端为队尾,删除(出队)的一端是队头。队列每次入队的元素总是顺序出队,所是先进先出。

    队列的基本运算:

    • 置空队列
    • 判断队空
    • 入队
    • 获取头元素
    • 出队

    队列的存储方式:顺序循序队列和链队列和循环链队列。

    #include <stdio.h>
    #include <stdlib.h>
    
    #define QueueSize 100
    
    typedef char DataType;
    /**
    **循序队列 
    **/ 
    typedef struct {
        DataType data[QueueSize];
        int front, rear;
    }CirQueue;
    /**
    ** 置空队列 
    **/
    void InitQueue(CirQueue *Q) {
        Q->front = Q->rear = 0; 
    } 
    
    /**
    **队列空 
    **/
    int QueueEmpty(CirQueue *Q) {
        return Q->rear == Q->front;
    }
    
    /**
    **队列满 
    **/ 
    int QueueFull(CirQueue *Q) {
        return (Q->rear + 1) % QueueSize == Q->front;
    }
    
    /**
    **入队列
    **/
    void EnQueue(CirQueue *Q, DataType x) {
        if(QueueFull(Q)) {
            printf("Queue overflow
    ");
        } else {
            Q->data[Q->rear] = x;
            Q->rear = (Q->rear + 1) % QueueSize;
        }
    } 
    
    /**
    **取头元素 
    **/
    DataType GetFront(CirQueue *Q) {
        if (QueueEmpty(Q)){
            printf("Queue empty
    ");
            exit(0);
        } else
            return Q->data[Q->front];
    }
    /**
    **出队列 
    **/
    DataType DeQueue(CirQueue *Q) {
        DataType x;
        if(QueueEmpty(Q)){
            printf("Queue empty
    ");
            exit(0);
        } else {
            x = Q->data[Q->front];
            Q->front = (Q->front + 1) % QueueSize;
            return x;
        }
    }
    View Code
  • 相关阅读:
    排序算法-总览
    MySQL插入大批量测试数据
    【剑指offer】面试的流程
    并发编程-内置锁
    并发编程-使用线程安全类
    规约先行-(二十一)设计规约
    规约先行-(二十)服务器
    [转]web.xml什么时候被加载进内存的
    DOM和BOM的理解
    代理&反向代理
  • 原文地址:https://www.cnblogs.com/Python-233/p/15084889.html
Copyright © 2011-2022 走看看