zoukankan      html  css  js  c++  java
  • 队列

    队列:在表的一端输入,另一端删除。有先后顺序存储。

    允许插入的为队尾(rear),允许删除的为队头(front)。

    队列的特点是先进先出。

    出队列:sq.rear=sq.rear+1

    队列空:sq.front=sq.rear//不能只凭这个判断循环队列的状态是空还是满。

    入队:sq.rear=(sq.rear+1)%maxsize

       sq.elem[sq.rear]=x

    出队:sq.rear=(sq.front+1)%maxsize

    #define maxsize
    typedef struct
    {
        elementype elem[maxsize];
        int front,rear;//队头front,队尾rear 
    }squeuetp;
    void InitQueue(cqueuetp *sq)
    {
        sq->front = 0;
        sq->rear = 0;
    }
    void main()
    {
        cqueuetp *sq;
        s1 = (cqueuetp *)malloc(sizeof(cqueuetp));
        InitQueue(sq);
    }
    
    int QueueEmpty(cquequetp *sq)
    {
        if(sq->rear==sq->front)
            return 1;
        else
            return 0;
    }
    
    int Size(cqueuetp *sq)
    {
        return ((maxsize+sq->rear-sq->front)%maxsize);
    }
    
    elemtype Head(cqueuetp *sq)
    {
        if(sq->front==sq->rear)
            return NULL;
        else
            return (sq->elem[(sq->front+1)%maxsze]);
    }

    重点:

    void EnQueue(cqueuetp *sq,elementype x)//没满则插入x作为新的队尾元素 
    {
        if((sq->rear+1)%maxsize==sq->front)
        {
            printf("overflow");
        }
        else
        {
            sq->rear = (sq->rear+1)%maxsize;
            sq->elem[sq->rear]=x;
        }
    }
    
    elementype DelQueue(cqueuetp *sq)
    {
        if(sq->front==sq->rear)
        {
            return NULL;
        }
        else
        {
            sq->front = (sq->front+1)%maxsize;
            return sq->elem[sq->front];
        }
    }
  • 相关阅读:
    【转】 上海交大ACM队长建议
    好资源
    待做
    分治思想
    周末看的东西
    [UVa11988] Broken Keyboard (a.k.a. Beiju Text)
    UVa 题目分类
    [UVa11729] Commando War
    [LA3135] Arugus
    [UVa11995] I Can Guess the Data Structure!
  • 原文地址:https://www.cnblogs.com/claudia529/p/11104710.html
Copyright © 2011-2022 走看看